📄 guiwindp.inc
字号:
jne .yesfiles mov dword[GUIcurrentfilewin],1.yesfiles mov eax,[GUIfileentries] sub eax,[GUIcurrentviewloc] mov [cloadnleft],eax mov eax,[GUIcurrentviewloc] mov [cloadnposb],eax mov dword[cloadmaxlen],23 GUIOuttextwinloadfile 1,8,29 ; Text/Shadow for Filename Box GUIOuttextwinloadfile 1,8,29+7 GUIOuttextwinloadfile 1,8,29+7*2 GUIOuttextwinloadfile 1,8,29+7*3 GUIOuttextwinloadfile 1,8,29+7*4 GUIOuttextwinloadfile 1,8,29+7*5 GUIOuttextwinloadfile 1,8,29+7*6 GUIOuttextwinloadfile 1,8,29+7*7 GUIOuttextwinloadfile 1,8,29+7*8 GUIOuttextwinloadfile 1,8,29+7*9 GUIOuttextwinloadfile 1,8,29+7*10 GUIOuttextwinloadfile 1,8,29+7*11 GUIOuttextwinloadfile 1,8,29+7*12 GUIOuttextwinloadfile 1,8,29+7*13 GUIOuttextwinloadfile 1,8,29+7*14 mov eax,[GUIdirentries] sub eax,[GUIcurrentdirviewloc] mov [cloadnleft],eax mov eax,[GUIcurrentdirviewloc] mov [cloadnposb],eax mov dword[cloadmaxlen],11 GUIOuttextwinloaddir 1,164,29 ; Text/Shadow for DIR Box GUIOuttextwinloaddir 1,164,29+7 GUIOuttextwinloaddir 1,164,29+7*2 GUIOuttextwinloaddir 1,164,29+7*3 GUIOuttextwinloaddir 1,164,29+7*4 GUIOuttextwinloaddir 1,164,29+7*5 GUIOuttextwinloaddir 1,164,29+7*6 GUIOuttextwinloaddir 1,164,29+7*7 GUIOuttextwinloaddir 1,164,29+7*8 GUIOuttextwinloaddir 1,164,29+7*9 GUIOuttextwinloaddir 1,164,29+7*10 GUIOuttextwinloaddir 1,164,29+7*11 GUIOuttextwinloaddir 1,164,29+7*12 GUIOuttextwinloaddir 1,164,29+7*13 GUIOuttextwinloaddir 1,164,29+7*14 mov byte[GUItextcolor],221 ; Green Text cmp byte[GUIWincoladd],0 je .zero4 mov byte[GUItextcolor],222.zero4 GUIOuttextwin2 1,7,147, GUILoadTextA xor ebx,ebx mov bl,[GUILoadPos] mov byte[GUILoadTextA+ebx],0 GUIDisplayButtonHole 1,9,163,byte[GUIloadfntype],0 ; Radio Buttons GUIDisplayButtonHole 1,9,171,byte[GUIloadfntype],1%ifdef __MSDOS__ GUIDisplayButtonHole 1,9,179,byte[GUIloadfntype],2%endif GUIDisplayCheckboxTn 1,10,187,showallext,1,GUILoadText6 ; Checkboxes GUIDisplayCheckboxTn 1,144,177,ForceROMTiming,1,GUILoadTextC GUIDisplayCheckboxTn 1,144,187,ForceROMTiming,2,GUILoadTextD GUIDisplayCheckboxTn 1,184,177,ForceHiLoROM,1,GUILoadTextE GUIDisplayCheckboxTn 1,184,187,ForceHiLoROM,2,GUILoadTextF ; Slidebar for Files ; win#,X,Y start, %4-List Loc, %5-List size, %6-Screen size, %7-Bar Size DrawSlideBarWin 1,146,33,[GUIcurrentviewloc],[GUIfileentries],15,94,GUILStA cmp byte[GUICHold],1 jne .noholda add byte[GUIWincoladd],3.noholda GUIDisplayIconWin 1,146,25,GUIIconDataUpArrow cmp byte[GUICHold],1 jne .noholda2 sub byte[GUIWincoladd],3.noholda2 cmp byte[GUICHold],2 jne .noholdb add byte[GUIWincoladd],3.noholdb GUIDisplayIconWin 1,146,127,GUIIconDataDownArrow cmp byte[GUICHold],2 jne .noholdb2 sub byte[GUIWincoladd],3.noholdb2 ; Slidebar for DIR DrawSlideBarWin 1,230,33,[GUIcurrentdirviewloc],[GUIdirentries],15,94,GUILStB cmp byte[GUICHold],3 jne .noholdc add byte[GUIWincoladd],3.noholdc GUIDisplayIconWin 1,230,25,GUIIconDataUpArrow cmp byte[GUICHold],3 jne .noholdc2 sub byte[GUIWincoladd],3.noholdc2 cmp byte[GUICHold],4 jne .noholdd add byte[GUIWincoladd],3.noholdd GUIDisplayIconWin 1,230,127,GUIIconDataDownArrow cmp byte[GUICHold],4 jne .noholdd2 sub byte[GUIWincoladd],3.noholdd2 retSECTION .dataGUILoadText1 db 'SELECT FILE TO LOAD:',0%ifndef __MSDOS__GUILoadText3 db 'LONG FILENAME',0%elseGUILoadText2 db 'DISPLAY TYPE:',0GUILoadText3 db 'WIN9X LONG FILENAME',0GUILoadText4 db 'DOS 8.3 FORMAT',0%endifGUILoadText5 db 'SNES HEADER NAME',0GUILoadText6 db 'SHOW ALL EXTENSIONS',0GUILoadText7 db 'FILENAME',0GUILoadText8 db 'DIRECTORY',0GUILoadText9 db 'LOAD',0NEWSYM GUILoadTextA, times 38 db 0GUILoadTextB db 'FORCE',0GUILoadTextC db 'NTSC',0GUILoadTextD db 'PAL',0GUILoadTextE db 'LOROM',0GUILoadTextF db 'HIROM',0SECTION .bssGUILStA resd 3GUILStB resd 3NEWSYM GUILoadPos, resb 1SECTION .textDisplayGUIReset: ; Reset Confirmation GUIDrawWindowBox 12,GUIResetDisp cmp byte[GUIWincoladd],0 ;Red Box around buttons je .zero mov byte[GUItextcolor],211.zero mov dl,224 cmp byte[GUIWincoladd],0 je .zero4 inc dl.zero4 cmp byte[GUICResetPos],0 je near .resetboxa DrawGUIWinBox 12,79,29,117,42,dl jmp .resetboxb.resetboxa DrawGUIWinBox 12,19,29,57,42,dl.resetboxb DrawGUIButton 12,20,30,56,41,GUIResetText2,2,0,0 ; Buttons DrawGUIButton 12,80,30,116,41,GUIResetText3,3,0,0 GUIDisplayTextY 12,6,16,GUIResetText1 retSECTION .dataGUIResetText1 db 'RESET: ARE YOU SURE ?',0GUIResetText2 db 'YES',0GUIResetText3 db 'NO',0SECTION .textDisplayGUIStates: ; Save/Load State Confirmation GUIDrawWindowBox 14,GUIStatesDisp cmp byte[GUIWincoladd],0 ; Red Box around buttons je .zero mov byte[GUItextcolor],211.zero mov dl,224 cmp byte[GUIWincoladd],0 je .zero4 inc dl.zero4 cmp byte[GUICStatePos],0 je near .resetboxa DrawGUIWinBox 14,79,29,117,42,dl jmp .resetboxb.resetboxa DrawGUIWinBox 14,19,29,57,42,dl.resetboxb DrawGUIButton 14,20,30,56,41,GUIStatesText3,10,0,0 ; Buttons DrawGUIButton 14,80,30,116,41,GUIStatesText4,11,0,0 cmp byte[GUIStatesText5],1 ; Determines Load or Save box je near .load GUIDisplayTextY 14,6,16,GUIStatesText1 jmp .save.load GUIDisplayTextY 14,6,16,GUIStatesText2.save retSECTION .dataGUIStatesText1 db 'OKAY TO SAVE STATE?',0GUIStatesText2 db 'OKAY TO LOAD STATE?',0GUIStatesText3 db 'YES',0GUIStatesText4 db 'NO',0GUIStatesText5 db 0SECTION .textDisplayGUIChoseSave: ; Pick Save State GUIDrawWindowBox 2,GUIStateSelDisp GUIDisplayTextY 2,6,16,GUIChoseSaveText1 mov byte[GUIChoseSaveText2],'0' GUIDisplayText 2,21,31,GUIChoseSaveText2 mov byte[GUIChoseSaveText2],'1' GUIDisplayText 2,41,31,GUIChoseSaveText2 mov byte[GUIChoseSaveText2],'2' GUIDisplayText 2,61,31,GUIChoseSaveText2 mov byte[GUIChoseSaveText2],'3' GUIDisplayText 2,81,31,GUIChoseSaveText2 mov byte[GUIChoseSaveText2],'4' GUIDisplayText 2,101,31,GUIChoseSaveText2 mov byte[GUIChoseSaveText2],'5' GUIDisplayText 2,21,46,GUIChoseSaveText2 mov byte[GUIChoseSaveText2],'6' GUIDisplayText 2,41,46,GUIChoseSaveText2 mov byte[GUIChoseSaveText2],'7' GUIDisplayText 2,61,46,GUIChoseSaveText2 mov byte[GUIChoseSaveText2],'8' GUIDisplayText 2,81,46,GUIChoseSaveText2 mov byte[GUIChoseSaveText2],'9' GUIDisplayText 2,101,46,GUIChoseSaveText2 GUIDisplayTextY 2,6,61,GUIChoseSlotText1 mov eax,[current_zst] mov dl,10 div dl add al,'0' mov [GUIChoseSaveText2],ah mov [GUIChoseSlotTextX],al mov dword[GUITemp],GUIIconDataButtonHole ; Radio Buttons GUIDisplayButtonHole 2,10,28,byte[GUIChoseSaveText2],0 GUIDisplayButtonHole 2,30,28,byte[GUIChoseSaveText2],1 GUIDisplayButtonHole 2,50,28,byte[GUIChoseSaveText2],2 GUIDisplayButtonHole 2,70,28,byte[GUIChoseSaveText2],3 GUIDisplayButtonHole 2,90,28,byte[GUIChoseSaveText2],4 GUIDisplayButtonHole 2,10,43,byte[GUIChoseSaveText2],5 GUIDisplayButtonHole 2,30,43,byte[GUIChoseSaveText2],6 GUIDisplayButtonHole 2,50,43,byte[GUIChoseSaveText2],7 GUIDisplayButtonHole 2,70,43,byte[GUIChoseSaveText2],8 GUIDisplayButtonHole 2,90,43,byte[GUIChoseSaveText2],9 GUIDisplayBBox 2,72,59,90,66,167 ; Save Slot Frameskip +/- Box GUIDisplayTextG 2,83,61,GUIChoseSlotTextX mov byte[GUItextcolor],217 cmp byte[GUIWincoladd],0 je .slotzero5 mov byte[GUItextcolor],211.slotzero5 DrawGUIButton 2,94,59,102,67,GUIChoseSlotTextY,80,-2,-1 DrawGUIButton 2,105,59,113,67,GUIChoseSlotTextZ,81,-2,-1 retSECTION .dataGUIChoseSaveText1 db 'SELECT SAVE SLOT:',0GUIChoseSaveText2 db '-',0GUIChoseSlotText1 db 'SLOT LEVEL:',0GUIChoseSlotTextX db '-',0GUIChoseSlotTextY db '+',0GUIChoseSlotTextZ db '-',0SECTION .text%macro DGOptnsBorderBox 3 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 mov dl,[GUIWincol] DrawGUIWinBox %1,%2+1,%3,%2+18,%3,dl mov dl,[GUIWincol] inc dl DrawGUIWinBox %1,%2,%3+1,%2-1,%3+5,dl mov dl,[GUIWincol] add dl,4 DrawGUIWinBox %1,%2+1,%3+8,%2+18,%3-8,dl mov dl,[GUIWincol] add dl,3 DrawGUIWinBox %1,%2+22,%3+1,%2-23,%3+5,dl%endmacro%macro DGOptnsDrawBox 3 mov eax,[GUIwinposx+9*4] mov ebx,[GUIwinposy+9*4] add eax,%1 add ebx,%2 mov ecx,eax add ecx,20 mov dl,167 mov esi,7%%loop DrawGUILine dec esi jnz %%loop mov eax,%3 mov ebx,[ScanCodeListing+eax*3] mov [GUIGameDisplayKy],ebx mov byte[GUIGameDisplayKy+3],0 mov byte[GUItextcolor],223 GUIOuttextwin2 9,%1+3,%2+2,GUIGameDisplayKy mov byte[GUItextcolor],221 cmp byte[GUIWincoladd],0 je %%zero mov byte[GUItextcolor],222%%zero GUIOuttextwin2 9,%1+2,%2+1,GUIGameDisplayKy%endmacro%macro DDrawBox 4 mov eax,[GUIwinposx+%1*4] mov ebx,[GUIwinposy+%1*4] add eax,%2+1 add ebx,%3+1 mov ecx,eax add ecx,20 mov dl,167 mov esi,7%%loop DrawGUILine dec esi jnz %%loop mov eax,%4 mov ebx,[ScanCodeListing+eax*3] mov [GUIGameDisplayKy],ebx mov byte[GUIGameDisplayKy+3],0 mov byte[GUItextcolor],223 GUIOuttextwin2 %1,%2+4,%3+3,GUIGameDisplayKy mov byte[GUItextcolor],221 cmp byte[GUIWincoladd],0 je %%zero mov byte[GUItextcolor],222%%zero GUIOuttextwin2 %1,%2+3,%3+2,GUIGameDisplayKy DGOptnsBorderBox %1,%2,%3%endmacro%macro DGOptnsDrawBox2 3 mov eax,[GUIwinposx+3*4] mov ebx,[GUIwinposy+3*4] add eax,%1 add ebx,%2 mov ecx,eax add ecx,20 mov dl,167 mov esi,7%%loop DrawGUILine dec esi jnz %%loop mov eax,%3 mov ebx,[ScanCodeListing+eax*3] mov [GUIGameDisplayKy],ebx mov byte[GUIGameDisplayKy+3],0 mov byte[GUItextcolor],223 GUIOuttextwin2 3,%1+3,%2+2,GUIGameDisplayKy mov byte[GUItextcolor],221 cmp byte[GUIWincoladd],0 je %%zero mov byte[GUItextcolor],222%%zero GUIOuttextwin2 3,%1+2,%2+1,GUIGameDisplayKy%endmacro%macro GUIInputDispAll 1 GUIInputDispKey 45,102,%1upk ; Up GUIInputDispKey 45,112,%1downk ; Down GUIInputDispKey 45,122,%1leftk ; Left GUIInputDispKey 45,132,%1rightk ; Right GUIInputDispKey 45,142,%1startk ; Start GUIInputDispKey 45,152,%1selk ; Select GUIInputDispKey 85,102,%1Ak ; A GUIInputDispKey 85,112,%1Bk ; B GUIInputDispKey 85,122,%1Xk ; X GUIInputDispKey 85,132,%1Yk ; Y GUIInputDispKey 85,142,%1Lk ; L GUIInputDispKey 85,152,%1Rk ; R GUIInputDispKey 125,102,%1Xtk ; X Turbo GUIInputDispKey 125,112,%1Ytk ; Y Turbo GUIInputDispKey 125,122,%1Ltk ; L Turbo GUIInputDispKey 165,102,%1Atk ; A Turbo GUIInputDispKey 165,112,%1Btk ; B Turbo GUIInputDispKey 165,122,%1Rtk ; R Turbo GUIInputDispKey 125,142,%1DLk ; Down-Left GUIInputDispKey 125,152,%1DRk ; Down-Right GUIInputDispKey 165,142,%1ULk ; Up-Left GUIInputDispKey 165,152,%1URk ; Up-Right%endmacro%macro GUIInputDispKey 3 mov eax,[%3] mov [GUIInputTextE],eax DGOptnsDrawBox2 %1,%2,[GUIInputTextE]%endmacroDisplayGUIInput: ; Player Select, Joystick/keyboard Type List, Button Assignments GUIDrawWindowBox 3,GUIInputDisp mov eax,[GUIInputTabs] dec al mov [cplayernum],al GUIDrawTArea 3 GUIDrawTabs GUIInputTabs GUIDisplayTextY 3,6,26,GUIInputTextA movzx eax,byte[cplayernum] mov ebx,[GUIInputRefP+eax*4] movzx ebx,byte[ebx] cmp byte[GUIFreshInputSelect],0 je .notfreshinput pushad mov byte[GUIFreshInputSelect],0 mov dword[GUIJT_viewable],5 mov eax,[NumInputDevices] mov [GUIJT_entries],eax mov [GUIJT_offset],ebx mov eax,GUIcurrentinputviewloc mov [GUIJT_currentviewloc],eax mov eax,GUIcurrentinputcursloc mov [GUIJT_currentcursloc],eax call GUIGenericJumpTo popad.notfreshinput mov al,bl mov ebx,eax shl eax,4 add eax,ebx add eax,GUIInputNames mov [GUITemp],eax GUIDisplayTextY 3,6+54,83,[GUITemp] ; CDV GUIDisplayTextY 3,6,83,GUIInputTextA1 GUIDisplayTextY 3,6,94,GUIInputTextB GUIDisplayText 3,6,104,GUIInputTextB1 GUIDisplayText 3,6,114,GUIInputTextB2 GUIDisplayText 3,6,124,GUIInputTextB3 GUIDisplayText 3,6,134,GUIInputTextB4 GUIDisplayText 3,6,144,GUIInputTextB5 GUIDisplayText 3,6,154,GUIInputTextB6 GUIDisplayText 3,76,104,GUIInputTextC1 GUIDisplayText 3,76,114,GUIInputTextC2 GUIDisplayText 3,76,124,GUIInputTextC3 GUIDisplayText 3,76,134,GUIInputTextC4 GUIDisplayText 3,76,144,GUIInputTextC5 GUIDisplayText 3,76,154,GUIInputTextC6 GUIDisplayTextY 3,116,94,GUIInputTextC GUIDisplayText 3,156,104,GUIInputTextC1 GUIDisplayText 3,156,114,GUIInputTextC2 GUIDisplayText 3,156,124,GUIInputTextC6 GUIDisplayText 3,116,104,GUIInputTextC3 GUIDisplayText 3,116,114,GUIInputTextC4 GUIDisplayText 3,116,124,GUIInputTextC5 GUIDisplayTextY 3,113,134,GUIInputTextD GUIDisplayText 3,153,144,GUIInputTextD1 GUIDisplayText 3,153,154,GUIInputTextD2 GUIDisplayText 3,113,144,GUIInputTextD3 GUIDisplayText 3,113,154,GUIInputTextD4%ifdef __MSDOS__ GUIDisplayCheckboxu 3,105,160,SidewinderFix,GUIInputTextE4,0 cmp byte[cplayernum],0 jne .notp1 GUIDisplayCheckboxu 3,5,190,pl1p209,GUIInputTextE5,4.notp1 cmp byte[cplayernum],1 jne .notp2 GUIDisplayCheckboxu 3,5,190,pl2p209,GUIInputTextE5,4.notp2 cmp byte[cplayernum],2 jne .notp3 GUIDisplayCheckboxu 3,5,190,pl3p209,GUIInputTextE5,4.notp3 cmp byte[cplayernum],3 jne .notp4 GUIDisplayCheckboxu 3,5,190,pl4p209,GUIInputTextE5,4.notp4 cmp byte[cplayernum],4 jne .notp5 GUIDisplayCheckboxu 3,5,190,pl5p209,GUIInputTextE5,4.notp5%endif GUIDisplayCheckboxu 3,5,160,GameSpecificInput,GUIInputTextE6,0 GUIDisplayCheckboxu 3,5,170,AllowUDLR,GUIInputTextE7,0 GUIDisplayCheckboxu 3,105,170,Turbo30hz,GUIInputTextE8,0 GUIDisplayCheckboxu 3,5,180,pl12s34,GUIInputTextE9,0 DrawGUIButton 3,123,34,153,45,GUIInputTextE1,14,0,0 ; Buttons DrawGUIButton 3,123,50,177,61,GUIInputTextE2,40,0,0%ifdef __MSDOS__ DrawGUIButton 3,123,66,183,77,GUIInputTextE3,15,0,0%endif GUIDisplayBBoxS 3,5,34,107,77,167 ; Main Box mov ebx,[GUIcurrentinputcursloc] sub ebx,[GUIcurrentinputviewloc] mov eax,ebx lea ebx,[ebx*8] add ebx,36 DrawGUIWinBox2 3,5,107,7,224 mov eax,[GUIcurrentinputviewloc] ; Text&Shadow inside Main Box shl eax,4 add eax,[GUIcurrentinputviewloc] add eax,GUIInputNames mov [GUITemp],eax
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -