📄 guikeys.inc
字号:
push edx%rep %0 xor edx,edx mov eax,[%1] 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 jnz %%exit %rotate 1%endrep%%exit pop edx%endmacroGUIInputKeys: ToUpperASM cmp dh,9 jne .notab KeyTabInc GUIInputTabs mov byte[GUIFreshInputSelect],1.notab GUIKeyCheckbox GameSpecificInput,'G' GUIKeyCheckbox AllowUDLR,'A' GUIKeyCheckbox Turbo30hz,'T' cmp dh,'U' jne .nousepl34 xor byte[pl12s34],1 mov byte[MultiTap],1 cmp byte[pl12s34],1 je .nomtap cmp byte[pl3contrl],0 jne .mtap cmp byte[pl4contrl],0 jne .mtap cmp byte[pl5contrl],0 jne .mtap.nomtap mov byte[MultiTap],0.mtap.nousepl34%ifdef __MSDOS__ GUIKeyCheckbox SidewinderFix,'S' cmp dh,'J' jne .nop209 cmp byte[cplayernum],0 jne .nopl1 GUIKeyCheckbox pl1p209,'J' jmp .nopl5.nopl1 cmp byte[cplayernum],1 jne .nopl2 GUIKeyCheckbox pl2p209,'J' jmp .nopl5.nopl2 cmp byte[cplayernum],2 jne .nopl3 GUIKeyCheckbox pl3p209,'J' jmp .nopl5.nopl3 cmp byte[cplayernum],3 jne .nopl4 GUIKeyCheckbox pl4p209,'J' jmp .nopl5.nopl4 cmp byte[cplayernum],4 jne .nopl5 GUIKeyCheckbox pl5p209,'J'.nopl5 call SetDevice.nop209%endif retGUITCPIPKeys: retGUIOptionKeys: ToUpperASM cmp byte[ShowMMXSupport],1 jne .nommxcopy GUIKeyCheckbox MMXSupport,'M' ; Checkboxes.nommxcopy GUIKeyButtonHole ScreenShotFormat,0,'P'%ifndef NO_PNG GUIKeyButtonHole ScreenShotFormat,1,'G'%endif GUIKeyCheckbox newengen, 'N' GUIKeyCheckbox FPSAtStart,'F' GUIKeyCheckbox TimerEnable,'C' GUIKeyCheckbox ClockBox,'X' GUIKeyCheckbox TwelveHourClock,'1' GUIKeyCheckbox bgfixer,'A' GUIKeyCheckbox SmallMsgText,'S' GUIKeyCheckbox AutoPatch,'I' GUIKeyCheckbox RomInfo,'R' GUIKeyCheckbox DisplayInfo,'W' GUIKeyCheckbox GUIEnableTransp,'T'%ifdef __WIN32__ GUIKeyCheckbox PauseFocusChange,'B' GUIKeyCheckbox HighPriority,'O' pushad call CheckPriority popad GUIKeyCheckbox DisableScreenSaver,'D' pushad call CheckScreenSaver popad%endif retGUIAboutKeys: ToUpperASM cmp dh,'E' jne .noeegg xor byte[EEgg],1.noeegg retGUISaveKeys: ToUpperASM GUIKeyCheckbox AutoIncSaveSlot,'I' ; Checkboxes GUIKeyCheckbox nosaveSRAM,'D' GUIKeyCheckbox SRAMSave5Sec,'C' GUIKeyCheckbox LatestSave,'S' GUIKeyCheckbox AutoState,'A' GUIKeyCheckbox SRAMState,'L' GUIKeyCheckbox PauseLoad,'P' GUIKeyCheckbox PauseRewind,'R' retGUISpeedKeys: ToUpperASM GUIKeyCheckbox FastFwdToggle,'T' ; Checkbox cmp dh,'A' ; Framerate Checkboxes jne .noautofr cmp byte[frameskip],0 ; 0 = autoframerate / 1-10 = frameskip 0-9 je .zero mov byte[frameskip],0 jmp .notzero.zero mov byte[FPSOn],0 mov byte[frameskip],1.notzero.noautofr retGUIAddonKeys: ToUpperASM GUIKeyButtonHole device1,0,'G' ;Radio Buttons GUIKeyButtonHole device1,1,'M' GUIKeyButtonHole device2,0,'A' GUIKeyButtonHole device2,1,'O' GUIKeyButtonHole device2,2,'S' GUIKeyButtonHole device2,3,'1' GUIKeyButtonHole device2,4,'2' GUIKeyCheckbox mouse1lh,'L' ; Checkboxes GUIKeyCheckbox mouse2lh,'E' retGUIChipKeys: ToUpperASM GUIKeyCheckbox nssdip1,'1' ; Checkboxes GUIKeyCheckbox nssdip2,'2' GUIKeyCheckbox nssdip3,'3' GUIKeyCheckbox nssdip4,'4' GUIKeyCheckbox nssdip5,'5' GUIKeyCheckbox nssdip6,'6' retGUIGUIOptnsKeys: ToUpperASM GUIKeyCheckbox mousewrap,'M' ; Checkboxes GUIKeyCheckbox mouseshad,'S' GUIKeyCheckbox esctomenu,'G' GUIKeyCheckbox savewinpos,'W' GUIKeyCheckbox GUIRClick,'C' GUIKeyCheckbox JoyPad1Move,'U' GUIKeyCheckbox newfont,'O' GUIKeyCheckbox lhguimouse,'/' cmp dh,'F' jne .guioptn8 xor byte[FilteredGUI],1%ifdef __MSDOS__ call DOSClearScreen%endif pushad%ifdef __OPENGL__ cmp byte[cvidmode],5 jl near .skipinit pushad call drawscreenwin call initwinvideo popad.skipinit%endif call Clear2xSaIBuffer popad.guioptn8 GUIKeyButtonHole GUIEffect,0,'E' ; Start From Radio Buttons GUIKeyButtonHole GUIEffect,1,'N' GUIKeyButtonHole GUIEffect,2,'A' GUIKeyButtonHole GUIEffect,3,'B' GUIKeyButtonHole GUIEffect,4,'R' GUIKeyButtonHole GUIEffect,5,'K'%ifdef __WIN32__ GUIKeyCheckbox MouseWheel,'H' GUIKeyCheckbox TrapMouseCursor,'P' GUIKeyCheckbox AlwaysOnTop,'T' GUIKeyCheckbox SaveMainWindowPos,'V' GUIKeyCheckbox AllowMultipleInst,'L'%endifretGUIVideoKeys:%ifndef __MSDOS__ call GUIPathKeys%endif cmp dh,9 jne near .tabdone cmp byte[NTSCFilter],0 je near .nontsc movzx eax,byte[cvidmode] cmp byte[GUINTVID+eax],0 je .nontsc KeyTabInc GUIVideoTabs,GUIVntscTab jmp .tabdone.nontsc KeyTabInc GUIVideoTabs.tabdone ToUpperASM xor eax,eax cmp dword[GUIVideoTabs],1 jne near .notmodestab; "Home"%ifdef __UNIXSDL__ cmp dl,89 je .yeshome cmp dword[numlockptr],1 je .nohome cmp dl,71 jne .nohome.yeshome%else cmp dl,71 jne .nohome%endif mov dword[GUIcurrentvideocursloc],0 mov dword[GUIcurrentvideoviewloc],0.nohome; "End"%ifdef __UNIXSDL__ cmp dl,95 je .yesendp cmp dword[numlockptr],1 je .noendp cmp dl,79 jne .noendp.yesendp%else cmp dl,79 jne .noendp%endif mov eax,[NumVideoModes] dec eax mov [GUIcurrentvideocursloc],eax sub eax,19 mov [GUIcurrentvideoviewloc],eax test dword[GUIcurrentvideoviewloc],8000000h jz .noendp mov dword[GUIcurrentvideoviewloc],0.noendp; "Up"%ifdef __UNIXSDL__ cmp dl,90 je .up cmp dword[numlockptr],1 je .noup cmp dl,72 jne .noup%else cmp dl,72 jne .noup%endif.up cmp dword[GUIcurrentvideocursloc],0 je .noup mov ebx,[GUIcurrentvideocursloc] cmp [GUIcurrentvideoviewloc],ebx jne .noviewdec dec dword[GUIcurrentvideoviewloc].noviewdec dec dword[GUIcurrentvideocursloc].noup; "Down"%ifdef __UNIXSDL__ cmp dl,96 je .yesdown cmp dword[numlockptr],1 je .nodown cmp dl,80 jne .nodown.yesdown%else cmp dl,80 jne .nodown%endif mov ebx,[GUIcurrentvideocursloc] inc ebx cmp ebx,[NumVideoModes] je .nodown inc dword[GUIcurrentvideocursloc] sub ebx,20 cmp ebx,[GUIcurrentvideoviewloc] jne .nodown inc dword[GUIcurrentvideoviewloc].nodown; "PageUp"%ifdef __UNIXSDL__ cmp dl,91 je .yespageup cmp dword[numlockptr],1 je .nopageup cmp dl,73 jne .nopageup.yespageup%else cmp dl,73 jne .nopageup%endif sub dword[GUIcurrentvideoviewloc],20 sub dword[GUIcurrentvideocursloc],20 test dword[GUIcurrentvideoviewloc],8000000h jz .posv mov dword[GUIcurrentvideoviewloc],0.posv test dword[GUIcurrentvideocursloc],8000000h jz .posc mov dword[GUIcurrentvideocursloc],0.posc.nopageup; "PageDown"%ifdef __UNIXSDL__ cmp dl,97 je .yespagedn cmp dword[numlockptr],1 je .nopagedown cmp dl,81 jne .nopagedown.yespagedn%else cmp dl,81 jne .nopagedown%endif add dword[GUIcurrentvideoviewloc],20 add dword[GUIcurrentvideocursloc],20 mov ebx,[NumVideoModes] dec ebx cmp dword[GUIcurrentvideocursloc],ebx jb .poscd mov [GUIcurrentvideocursloc],ebx.poscd sub ebx,19 cmp dword[GUIcurrentvideoviewloc],ebx jl .posvd test ebx,8000000h jz .noneg mov ebx,0.noneg mov [GUIcurrentvideoviewloc],ebx.posvd.nopagedown; "Return" cmp dl,13 jne .noreturn mov byte[GUICBHold],4.noreturn.notmodestab cmp dword[GUIVideoTabs],2 jne near .notfilterstab%ifdef __MSDOS__ cmp byte[smallscreenon],1 je .noquarterscanlines cmp byte[ScreenScale],1 je .nohq4x%endif cmp dh,'I' jne .nointerpolation xor eax,eax mov al,[cvidmode]%ifdef __OPENGL__ cmp byte[GUIBIFIL+eax],0 je .nobilinearfilter xor byte[BilinearFilter],1 FilterExcl2 NTSCFilter pushad call drawscreenwin call initwinvideo call Clear2xSaIBuffer popad jmp .nointerpolation.nobilinearfilter%elifdef __MSDOS__ cmp byte[GUIEAVID+eax],0 jne .interpolation%endif%ifdef __WIN32__ cmp byte[GUIDSIZE+eax],0%else cmp byte[GUII2VID+eax],0%endif je .nointerpolation.interpolation xor byte[antienab],1 jz near .nointerpolation FilterExcl2 En2xSaI,hqFilter,NTSCFilter.nointerpolation cmp dh,'N' jne .nontscfilter xor ebx,ebx mov bl,[cvidmode] cmp byte[GUINTVID+ebx],0 je .nontscfilter xor byte[NTSCFilter],1 jz .nontscfilter FilterExcl2 En2xSaI,hqFilter,scanlines,antienab%ifdef __OPENGL__ FilterExcl2 BilinearFilter%endif%ifdef __WIN32__ cmp byte[NTSCFilter],0 je .noforce4_3 mov byte[Keep4_3Ratio],1.noforce4_3%endif%ifndef __MSDOS__ pushad call NTSCFilterInit popad%endif.nontscfilter xor ebx,ebx mov bl,[cvidmode]%ifdef __MSDOS__ cmp byte[GUI2xVID+ebx],0%else cmp byte[GUIDSIZE+ebx],0%endif je near .nosuper2xsai cmp dh,'S' jne .no2xsai mov eax,1 jmp .yesfilter.no2xsai cmp dh,'E' jne .nosupereagle mov eax,2 jmp .yesfilter.nosupereagle cmp dh,'P' jne .nosuper2xsai mov eax,3.yesfilter pushad call Clear2xSaIBuffer popad FilterExcl2 hqFilter,scanlines,antienab,NTSCFilter GUIkeystoggleoptn byte[En2xSaI],al.nosuper2xsai cmp dh,'Q' jne .nohqfilter xor ebx,ebx mov bl,[cvidmode] cmp byte[GUIHQ2X+ebx],0 jne .hqfilter%ifndef __MSDOS__ cmp byte[GUIHQ3X+ebx],0 jne .hqfilter cmp byte[GUIHQ4X+ebx],0 jne .hqfilter%endif jmp .nohqfilter.hqfilter pushad call Clear2xSaIBuffer popad xor byte[hqFilter],1 jz .nohqfilter FilterExcl2 scanlines,En2xSaI,antienab,NTSCFilter.nohqfilter%ifndef __MSDOS__ cmp dh,'X' jne .nohq2x cmp byte[hqFilter],0 je .nohq2x xor ebx,ebx mov bl,[cvidmode] cmp byte[GUIHQ2X+ebx],0 je .nohq2x pushad call Clear2xSaIBuffer popad GUIKeyButtonHole hqFilterlevel,2,'X'.nohq2x cmp dh,'3' jne .nohq3x cmp byte[hqFilter],0 je .nohq3x xor ebx,ebx mov bl,[cvidmode] cmp byte[GUIHQ3X+ebx],0 je .nohq3x pushad call Clear2xSaIBuffer popad GUIKeyButtonHole hqFilterlevel,3,'3'.nohq3x cmp dh,'4' jne .nohq4x cmp byte[hqFilter],0 je .nohq4x xor ebx,ebx mov bl,[cvidmode] cmp byte[GUIHQ4X+ebx],0 je .nohq4x pushad call Clear2xSaIBuffer popad GUIKeyButtonHole hqFilterlevel,4,'4'%endif.nohq4x xor eax,eax mov al,[cvidmode]%ifdef __MSDOS__ cmp byte[GUISLVID+eax],0%else cmp byte[GUIDSIZE+eax],0%endif je .nofullscanlines GUIKeyButtonHole scanlines,0,'O' cmp dh,'F' jne .nofullscanlines FilterExcl2 En2xSaI,hqFilter,NTSCFilter pushad%ifdef __MSDOS__ 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%endif popad GUIKeyButtonHole scanlines,1,'F'.nofullscanlines%ifdef __MSDOS__ cmp byte[ScreenScale],1 je .noquarterscanlines%endif xor eax,eax mov al,[cvidmode]%ifdef __MSDOS__ cmp byte[GUIHSVID+eax],0%else cmp byte[GUIDSIZE+eax],0%endif je near .noquarterscanlines cmp dh,'5' jne .nohalfscanlines FilterExcl2 En2xSaI,hqFilter,NTSCFilter%ifdef __MSDOS__ call DOSClearScreen%endif GUIKeyButtonHole scanlines,3,'5'.nohalfscanlines cmp dh,'2' jne .noquarterscanlines FilterExcl2 En2xSaI,hqFilter,NTSCFilter%ifdef __MSDOS__ call DOSClearScreen%endif GUIKeyButtonHole scanlines,2,'2'.noquarterscanlines cmp dh,'G' jne .nograyscale xor byte[GrayscaleMode],1.nograyscale cmp dh,'H' jne .nohiresmode7 xor ebx,ebx mov bl,[cvidmode] cmp byte[GUIM7VID+ebx],0 je .nohiresmode7 xor byte[Mode7HiRes16b],1.nohiresmode7%ifndef __UNIXSDL__ cmp dh,'V' jne .novsync xor byte[vsyncon],1%ifdef __WIN32__ pushad call initDirectDraw call Clear2xSaIBuffer popad%else jz .novsync FilterExcl2 Triplebufen%endif.novsync%endif%ifndef __UNIXSDL__ cmp dh,'T' jne .notriplebuffer xor eax,eax mov al,[cvidmode]%ifdef __WIN32__ cmp byte[GUIWFVID+eax],0 je near .notriplebuffer xor byte[TripleBufferWin],1 pushad call initDirectDraw call Clear2xSaIBuffer popad%else cmp byte[GUITBVID+ebx],0 je near .notriplebuffer xor byte[Triplebufen],1 jz .notriplebuffer FilterExcl2 vsyncon%endif.notriplebuffer%endif%ifndef __MSDOS__ cmp dh,'R' jne .nokeep4_3 xor ebx,ebx mov bl,[cvidmode] cmp byte[GUIKEEP43+ebx],0 je near .nokeep4_3 xor byte[Keep4_3Ratio],1 pushad call initwinvideo call Clear2xSaIBuffer popad.nokeep4_3%endif%ifdef __MSDOS__ cmp dh,'M' jne .nosmallscreen xor eax,eax mov al,[cvidmode] cmp byte[GUISSVID+eax],0 je .nosmallscreen xor byte[smallscreenon],1 FilterExcl2 ScreenScale,antienab,En2xSaI,scanlines DOSClearScreenKey.nosmallscreen cmp dh,'C' jne .nofullscreen xor eax,eax mov al,[cvidmode] cmp byte[GUIFSVID+eax],0 je .nofullscreen xor byte[ScreenScale],1 FilterExcl2 smallscreenon,antienab,En2xSaI DOSClearScreenKey.nofullscreen%endif.notfilterstab cmp dword[GUIVntscTab],1 jl .notntsctab cmp dh,'B' jne .noblend xor byte[NTSCBlend],1.noblend cmp dh,'R' jne .norefresh xor byte[NTSCRef],1.norefresh.notntsctab retGUISoundKeys: ToUpperASM cmp dh,'E' jne .notenablesound xor byte[soundon],1%ifdef __WIN32__ pushad call reInitSound popad%endif.notenablesound GUIKeyCheckbox StereoSound,'S' GUIKeyCheckbox RevStereo,'V' GUIKeyCheckbox Surround,'M' GUIKeyCheckbox SPCDisable,'D'%ifdef __MSDOS__ GUIKeyCheckbox Force8b,'F'%endif%ifdef __WIN32__ GUIKeyCheckbox PrimaryBuffer,'P'%endif cmp dh,'R' ; Sampling Rate jne .notsrate mov eax,[SoundQuality] mov al,[.sampratenext+eax] mov [SoundQuality],al.notsrate GUIKeyButtonHole SoundInterpType,0,'N' GUIKeyButtonHole SoundInterpType,1,'G' GUIKeyButtonHole SoundInterpType,2,'C' cmp byte[MMXSupport],0 je .no8ptinterp GUIKeyButtonHole SoundInterpType,3,'8'.no8ptinterp
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -