📄 guimouse.inc
字号:
cmp byte[GUICBHold],3 je near GUIProcReset cmp byte[GUICBHold],4 ; set video mode je near GUIProcVideo%ifndef __MSDOS__ cmp byte[GUICBHold],12 ; set custom video mode je near GUIProcCustomVideo%endif cmp byte[GUICBHold],37 ; reset ntsc options je near GUINTSCReset cmp byte[GUICBHold],38 ; reset ntsc options je near GUINTSCReset cmp byte[GUICBHold],39 ; reset ntsc options je near GUINTSCReset cmp byte[GUICBHold],81 ; ntsc preset je near GUINTSCPreset cmp byte[GUICBHold],82 ; ntsc preset je near GUINTSCPreset cmp byte[GUICBHold],83 ; ntsc preset je near GUINTSCPreset cmp byte[GUICBHold],84 ; ntsc preset je near GUINTSCPreset cmp byte[GUICBHold],10 je near GUIProcStates cmp byte[GUICBHold],11 je near GUIProcStates cmp byte[GUICBHold],5 je near CheatCodeRemove cmp byte[GUICBHold],6 je near CheatCodeToggle cmp byte[GUICBHold],7 je near CheatCodeSave cmp byte[GUICBHold],8 je near CheatCodeLoad cmp byte[GUICBHold],9 je near ProcessCheatCode cmp byte[GUICBHold],33 je near CheatCodeFix cmp byte[GUICBHold],14 je near SetDevice cmp byte[GUICBHold],15 je near CalibrateDev1 cmp byte[GUICBHold],16 ; movie replay jne .notMoviePlay mov byte[GUICBHold],0 pushad call MoviePlay popad ret.notMoviePlay cmp byte[GUICBHold],17 jne .notMovieRecord0 ; movie record mov byte[GUICBHold],0 pushad call MovieRecord popad ret.notMovieRecord0 cmp byte[GUICBHold],18 ; movie stop jne .notMovieStop mov byte[GUICBHold],0 pushad call MovieStop popad ret.notMovieStop cmp byte[GUICBHold],19 ; overwrite zmv ? yes jne .notMovieRecord1 mov byte[GUICBHold],0 pushad call MovieRecord popad ret.notMovieRecord1 cmp byte[GUICBHold],20 ; overwrite zmv ? no jne .notSkipMovie mov byte[GUICBHold],0 pushad call SkipMovie popad ret.notSkipMovie cmp byte[GUICBHold],29 ; insert chapter jne .noInsertChap mov byte[GUICBHold],0 pushad call MovieInsertChapter popad ret.noInsertChap cmp byte[GUICBHold],30 ; back to previous chapter jne .noPrevChap mov byte[GUICBHold],0 mov byte[GUIQuit],2 pushad call MovieSeekBehind popad ret.noPrevChap cmp byte[GUICBHold],31 ; jump to next chapter jne .noNextChap mov byte[GUICBHold],0 mov byte[GUIQuit],2 pushad call MovieSeekAhead popad ret.noNextChap cmp byte[GUICBHold],32 ; append movie jne .noAppend mov byte[GUICBHold],0 mov byte[GUIQuit],2 pushad call MovieAppend popad ret.noAppend cmp byte[GUICBHold],34 ; dump raw jne .noDumpRaw mov byte[GUICBHold],0 mov byte[GUIQuit],2 pushad call SetMovieForcedLength call MovieDumpRaw popad cmp byte[MovieVideoMode],2 jb .nomencoder cmp byte[mencoderExists],0 jne .nomencoder call guimencodermsg.nomencoder cmp byte[MovieAudio],0 je .nolame cmp byte[MovieAudioCompress],0 je .nolame cmp byte[lameExists],0 jne .nolame call guilamemsg.nolame ret.noDumpRaw cmp byte[GUICBHold],35 ; stop dump jne .noStopDumping mov byte[GUICBHold],0 mov byte[GUIQuit],2 pushad call MovieStop popad ret.noStopDumping cmp byte[GUICBHold],40 je near SetAllKeys cmp byte[GUICBHold],50 jne .notstartcheat call CheatCodeSearchInit.notstartcheat cmp byte[GUICBHold],60 jne .nocombclear mov byte[GUIComboTextH],0 mov byte[GUINumCombo],0 mov dword[GUIComboKey],0.nocombclear cmp byte[GUICBHold],61 jne .nocomboadd cmp byte[NumCombo],50 je .nocomboadd call ComboAdder.nocomboadd cmp byte[GUICBHold],62 jne .nocomboreplace cmp byte[NumCombo],0 je .nocomboreplace call ComboReplace.nocomboreplace cmp byte[GUICBHold],63 jne .nocomboremove cmp byte[NumCombo],0 je .nocomboremove call ComboRemoval.nocomboremove cmp byte[GUICBHold],51 jne .notrestartcheat mov byte[CheatWinMode],0 mov byte[CheatSearchStatus],0.notrestartcheat cmp byte[GUICBHold],52 jne .notviewcheat mov byte[CheatWinMode],2.notviewcheat cmp byte[GUICBHold],53 jne .notsearchprocess call CheatCodeSearchProcess.notsearchprocess cmp byte[GUICBHold],54 jne .notreturnview mov byte[CheatWinMode],1.notreturnview cmp byte[GUICBHold],55 jne .notadd cmp dword[NumCheatSrc],0 je .notadd mov byte[CheatWinMode],3 mov byte[CurCStextpos],0 mov byte[CSInputDisplay],'_' mov byte[CSInputDisplay+1],0 mov byte[CSDescDisplay],0.notadd cmp byte[GUICBHold],56 jne .notreturnadd mov byte[CheatWinMode],2.notreturnadd cmp byte[GUICBHold],57 jne .noinsertscc call AddCSCheatCode; call InsertSearchDescription.noinsertscc%ifndef __MSDOS__ cmp byte[GUICBHold],65 jne .nozsnespage pushad call ZsnesPage popad.nozsnespage cmp byte[GUICBHold],66 jne .nodocspage pushad call DocsPage popad.nodocspage%endif mov byte[GUICBHold],0 ret.checkmenuboxclick mov byte[GUIpclicked],1 xor eax,eax mov al,[GUIwinptr] or eax,eax jz near .nomore dec eax xor ebx,ebx mov bl,[GUIwinorder+eax] mov ecx,[GUIwinposx+ebx*4] cmp ecx,[GUImouseposx] jge .noinsdwin mov ecx,[GUIwinposy+ebx*4] cmp ecx,[GUImouseposy] jge .noinsdwin mov ecx,[GUIwinposx+ebx*4] add ecx,[GUIwinsizex+ebx*4] cmp ecx,[GUImouseposx] jle .noinsdwin mov ecx,[GUIwinposy+ebx*4] add ecx,[GUIwinsizey+ebx*4] add ecx,10 cmp ecx,[GUImouseposy] jle .noinsdwin jmp GUIWinClicked.noinsdwin.nextwindowfind or eax,eax jz near .nomore dec eax mov bl,[GUIwinorder+eax] mov ecx,[GUIwinposx+ebx*4] cmp ecx,[GUImouseposx] jge .nextwindowfind mov ecx,[GUIwinposy+ebx*4] cmp ecx,[GUImouseposy] jge .nextwindowfind mov ecx,[GUIwinposx+ebx*4] add ecx,[GUIwinsizex+ebx*4] cmp ecx,[GUImouseposx] jle .nextwindowfind mov ecx,[GUIwinposy+ebx*4] add ecx,[GUIwinsizey+ebx*4] add ecx,10 cmp ecx,[GUImouseposy] jle .nextwindowfind ; Shift all following windows downwards by 1.nextfind inc eax cmp al,[GUIwinptr] je .foundend mov cl,[GUIwinorder+eax] mov [GUIwinorder+eax-1],cl jmp .nextfind.foundend mov byte[GUIpclicked],0 mov [GUIwinorder+eax-1],bl ret.nomore cmp dword[SantaPos],272 je .nosanta cmp byte[ShowTimer],0 jne .nosanta mov dword[MsgGiftLeft],36*4 mov byte[ShowTimer],1.nosanta retGUIProcVideo: mov byte[GUICBHold],0%ifdef __MSDOS__ mov al,[GUIcurrentvideocursloc] cmp al,3 je .yes16b cmp al,5 je .yes16b cmp al,7 je .yes16b cmp al,10 je .yes16b cmp al,8 jne .no16b.yes16b%endif; mov byte[newengen],0; mov byte[cfgnewgfx],0; jmp .skipno16b.no16b mov byte[newengen],1.skipno16b call guiprevideo mov al,[cvidmode] mov [.prevvid],al mov al,[GUIcurrentvideocursloc] mov [cvidmode],al mov byte[ExitFromGUI],1 call initvideo cmp byte[videotroub],1 je .failed call GUISetPal call guipostvideo cmp dword[GUIkeydelay],0 je .failed2 mov dword[GUIkeydelay],0 ret.fullsc%ifndef __MSDOS__ mov [PrevFSMode],al%endif ret.failed mov byte[videotroub],0 mov al,[.prevvid] mov [cvidmode],al call initvideo call GUISetPal call guipostvideofail mov dword[GUIkeydelay],0 ret.failed2 mov byte[videotroub],0 mov al,[.prevvid] mov [cvidmode],al call initvideo call GUISetPal call vidpastecopyscr mov dword[GUIkeydelay],0 retSECTION .bss.prevvid resb 1SECTION .textGUINTSCReset: cmp byte[GUICBHold],38 je .reset2 cmp byte[GUICBHold],39 jne .reset1.reset1 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 cmp byte[GUICBHold],37 je .reset2done.reset2 mov byte[NTSCGamma],0 mov byte[NTSCRes],0 mov byte[NTSCArt],0 mov byte[NTSCFringe],0 mov byte[NTSCBleed],0 mov byte[NTSCWarp],0.reset2done mov byte[GUICBHold],0%ifndef __MSDOS__ pushad call NTSCFilterInit popad%endif retGUINTSCPreset: cmp byte[GUICBHold],81 jne near .nextpreset mov byte[NTSCPresetVar],0 jmp .lastpreset.nextpreset cmp byte[GUICBHold],82 jne near .nextpreset2 mov byte[NTSCPresetVar],1 jmp .lastpreset.nextpreset2 cmp byte[GUICBHold],83 jne near .nextpreset3 mov byte[NTSCPresetVar],2 jmp .lastpreset.nextpreset3 cmp byte[GUICBHold],84 jne near .lastpreset mov byte[NTSCPresetVar],3.lastpreset%ifndef __MSDOS__ pushad call NTSCFilterInit popad%endif mov byte[NTSCPresetVar],4 mov byte[GUICBHold],0 ret%ifndef __MSDOS__GUIProcCustomVideo: pushad call SetCustomXY popad mov byte[GUICBHold],0 mov dword[GUIInputBox],0%ifdef __WIN32__ cmp byte[cvidmode],37%else cmp byte[cvidmode],20%endif jl .notcustomres mov byte[changeRes],1 pushad call initwinvideo call Clear2xSaIBuffer popad.notcustomres ret%endifNEWSYM SwitchFullScreen pushad call Clear2xSaIBuffer xor eax,eax mov al,[cvidmode]%ifndef __MSDOS__ cmp byte[GUIWFVID+eax],0 je .fullsc%else jmp .fullsc%endif%ifndef __MSDOS__ mov al,[PrevWinMode] mov [cvidmode],al%endif call initvideo popad ret.fullsc%ifndef __MSDOS__ mov al,[PrevFSMode] mov [cvidmode],al%endif call initvideo popad retGUIWindowMove: xor eax,eax mov al,[GUIwinptr] dec eax xor ebx,ebx mov bl,[GUIwinorder+eax] mov eax,[GUImouseposx] sub eax,[GUIwinposx+ebx*4] mov edx,[GUImouseposy] sub edx,[GUIwinposy+ebx*4] cmp ebx,13 je near DisplayGUICheatSearchClick2 cmp ebx,7 je near DisplayGUICheatClick2 cmp ebx,5 je near DisplayGUIVideoClick2 cmp ebx,3 je near DisplayGUIInputClick2 cmp ebx,16 je near DisplayGUIComboClick2 jmp DisplayGUIConfirmClick2GUIWinClicked: mov ecx,[GUImouseposx] sub ecx,[GUIwinposx+ebx*4] mov edx,[GUImouseposy] sub edx,[GUIwinposy+ebx*4] mov esi,ecx sub esi,[GUIwinsizex+ebx*4] add esi,10 cmp esi,-1 jle .noclose cmp esi,10 jge .noclose cmp edx,0 jle .noclose cmp edx,10 jge .noclose mov byte[GUIwinorder+eax],0 mov byte[GUIwinactiv+ebx],0 dec byte[GUIwinptr] ret.noclose cmp edx,10 jge .nomove mov byte[GUIHold],1 mov ax,[GUIwinposx+ebx*4] movsx eax,ax mov [GUIHoldxm],eax mov ax,[GUIwinposy+ebx*4] movsx eax,ax mov [GUIHoldym],eax xor eax,eax mov ax,[GUImouseposx] mov [GUIHoldx],eax mov ax,[GUImouseposy] mov [GUIHoldy],eax ret.nomove mov eax,[GUImouseposx] sub eax,[GUIwinposx+ebx*4] mov edx,[GUImouseposy] sub edx,[GUIwinposy+ebx*4] cmp ebx,1 je near DisplayGUIConfirmClick cmp ebx,2 je near DisplayGUIChoseSaveClick cmp ebx,3 je near DisplayGUIInputClick cmp ebx,4 je near DisplayGUIOptionClick cmp ebx,5 je near DisplayGUIVideoClick cmp ebx,6 je near DisplayGUISoundClick cmp ebx,7 je near DisplayGUICheatClick cmp ebx,8 je near DisplayNetOptnsClick cmp ebx,9 je near DisplayGameOptnsClick cmp ebx,10 je near DisplayGUIOptnsClick cmp ebx,11 je near DisplayGUIAboutClick cmp ebx,12 je near DisplayGUIResetClick cmp ebx,13 je near DisplayGUICheatSearchClick cmp ebx,14 je near DisplayGUIStatesClick cmp ebx,15 je near DisplayGUIMovieClick cmp ebx,16 je near DisplayGUIComboClick cmp ebx,17 je near DisplayGUIAddOnClick cmp ebx,18 je near DisplayGUIChipClick cmp ebx,19 je near DisplayGUIPathsClick cmp ebx,20 je near DisplayGUISaveClick cmp ebx,21 je near DisplayGUISpeedClick ret%macro GUIClickArea 5 cmp eax,%1 jl %5 cmp edx,%2 jl %5 cmp eax,%3 jg %5 cmp edx,%4 jg %5%endmacro%macro GUIClickCButton 3 GUIClickArea %1+1,%2+3,%1+6,%2+8,%%noclick xor %3,1%%noclick%endmacro%macro GUIClickCButtonf 4 GUIClickArea %1+1,%2+3,%1+6,%2+8,%%noclick xor %3,1%ifdef __WIN32__ pushad call %4 popad%endif%%noclick
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -