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

📄 gui.asm

📁 linux下的任天堂模拟器代码。供大家参考。
💻 ASM
📖 第 1 页 / 共 5 页
字号:
  cmp byte[GUIcrowpos],0  jne .noaddc  mov dword[GUIcurrentcheatwin],1.noaddc  cmp byte[GUIcrowpos],1  jne .nobrowsec  mov dword[GUIcurrentcheatwin],0.nobrowsec.nocheat  cmp byte[GUIcmenupos],5  jne near .nonet%ifdef __MSDOS__;    GUICheckMenuItem 8, 0        ; Disable DOS Netplay Options;    GUICheckMenuItem 8, 1%endif;    GUICheckMenuItem 8, 0        ; Disable WIN/SDL Internet Option  cmp byte[GUIcrowpos],0  jne near .nonet.nonet  cmp byte[GUIcmenupos],6  jne near .nomisc  GUICheckMenuItem 9, 0  GUICheckMenuItem 10, 1  cmp byte[romloadskip],0  jne near .nomovie  GUICheckMenuItem 15, 2  cmp byte[GUIcrowpos],2  jne .nomovie  mov byte[MovieRecordWinVal],0.nomovie  GUICheckMenuItem 16, 3        ; Save Config  cmp byte[GUIcrowpos],4  jne .nosavestuff  mov byte[savecfgforce],1  pushad  call GUISaveVars  popad  mov byte[savecfgforce],0  call Makemode7Table  mov dword[GUICMessage],.message1  mov dword[GUICTimer],50.nosavestuff  GUICheckMenuItem 11, 6.nomisc  retSECTION .data.message1 db 'CONFIGURATION FILES SAVED.',0NEWSYM savecfgforce, db 0SECTION .textDisplayBoxes:                        ; Displays window when item is clicked  xor esi,esi.next2  mov al,[GUIwinorder+esi]  cmp al,0  je .done  inc esi  jmp .next2.done  mov eax,esi  dec eax  mov [cwindrawn],al  xor eax,eax  xor esi,esi.next  mov al,[GUIwinorder+esi]  cmp al,0  je near .nomore  push esi  cmp al,1  jne .noguiconfirm  cmp byte[GUIReset],1  je near .finstuff  call DisplayGUILoad  jmp .finstuff.noguiconfirm  cmp al,2  jne .noguichosesave  call DisplayGUIChoseSave  jmp .finstuff.noguichosesave  cmp al,3  jne .noguiinput  call DisplayGUIInput  jmp .finstuff.noguiinput  cmp al,4  jne .noguioption  call DisplayGUIOption  jmp .finstuff.noguioption  cmp al,5  jne .noguivideo  call DisplayGUIVideo  jmp .finstuff.noguivideo  cmp al,6  jne .noguisound  call DisplayGUISound  jmp .finstuff.noguisound  cmp al,7  jne .noguicheat  call DisplayGUICheat  jmp .finstuff.noguicheat  cmp al,8  jne .noguinet  call DisplayNetOptns  jmp .finstuff.noguinet  cmp al,9  jne .noguigameop  call DisplayGameOptns  jmp .finstuff.noguigameop  cmp al,10  jne .noguiconf  call DisplayGUIOptns%ifdef __WIN32__  pushad  call CheckAlwaysOnTop  popad%endif  jmp .finstuff.noguiconf  cmp al,11  jne .noguiconf2  call DisplayGUIAbout  jmp .finstuff.noguiconf2  cmp al,12  jne .noguireset  call DisplayGUIReset  jmp .finstuff.noguireset  cmp al,13  jne .noguisearch  call DisplayGUISearch  jmp .finstuff.noguisearch  cmp al,14  jne .noguistates  call DisplayGUIStates  jmp .finstuff.noguistates  cmp al,15  jne .noguimovies  call DisplayGUIMovies  jmp .finstuff.noguimovies  cmp al,16  jne .noguicombo  call DisplayGUICombo  jmp .finstuff.noguicombo  cmp al,17  jne .noaddon  call DisplayGUIAddOns  jmp .finstuff.noaddon  cmp al,18  jne .nochipconfig  call DisplayGUIChipConfig  jmp .finstuff.nochipconfig  cmp al,19  jne .nopaths  call DisplayGUIPaths  jmp .finstuff.nopaths  cmp al,20  jne .nosave  call DisplayGUISave  jmp .finstuff.nosave  cmp al,21  jne .nospeed  call DisplayGUISpeed  jmp .finstuff.nospeed.finstuff  pop esi  inc esi  dec byte[cwindrawn]  jmp .next.nomore  retGUIProcStates:  xor eax,eax  mov al,[GUIwinptr]  dec eax  mov byte[GUIwinactiv+14],0  mov byte[GUIwinorder+eax],0  dec byte[GUIwinptr]  cmp byte[GUICBHold],10  je .yesstate  mov byte[GUICBHold],0  ret.yesstate  mov byte[GUICBHold],0  cmp byte[GUIStatesText5],1  je .loadstate  pushad  call statesaver  popad  jmp .changedir.loadstate  pushad  call loadstate2  popad.changedir  retGUIProcReset:  cmp byte[GUICBHold],2  jne .noreset  pushad  mov byte[GUIReset],1  cmp byte[MovieProcessing],2 ;Recording  jne .nomovierecording  call ResetDuringMovie  jmp .movieendif.nomovierecording  call GUIDoReset.movieendif  popad.noreset  mov byte[GUICBHold],0  xor eax,eax  mov al,[GUIwinptr]  dec eax  mov byte[GUIwinactiv+12],0  mov byte[GUIwinorder+eax],0  dec byte[GUIwinptr]  ret%macro GUIDMHelp 4  mov byte[GUItextcolor],46  mov byte[GUItextcolor+1],42  mov byte[GUItextcolor+2],38  mov byte[GUItextcolor+3],44  mov byte[GUItextcolor+4],40  cmp byte[GUIcmenupos],%4  jne %%nohighlight  mov byte[GUItextcolor],38  mov byte[GUItextcolor+1],40  mov byte[GUItextcolor+2],46  mov byte[GUItextcolor+3],40  mov byte[GUItextcolor+4],44%%nohighlight  GUIBox %1,3,%2,3,[GUItextcolor]  GUIBox %1,4,%2,12,[GUItextcolor+1]  GUIBox %1,13,%2,13,[GUItextcolor+2]  GUIBox %1,3,%1,12,[GUItextcolor+3]  GUIBox %2,4,%2,13,[GUItextcolor+4]  GUIOuttext %1+5,7,%3,44  GUIOuttext %1+4,6,%3,62%endmacro%macro GUIDMHelpB 4  mov byte[GUItextcolor],46  mov byte[GUItextcolor+1],42  mov byte[GUItextcolor+2],38  mov byte[GUItextcolor+3],44  mov byte[GUItextcolor+4],40  cmp byte[GUIcwinpress],%4  jne %%nohighlight  mov byte[GUItextcolor],38  mov byte[GUItextcolor+1],40  mov byte[GUItextcolor+2],46  mov byte[GUItextcolor+3],40  mov byte[GUItextcolor+4],44%%nohighlight  GUIBox %1,3,%2,3,[GUItextcolor]  GUIBox %1,4,%2,13,[GUItextcolor+1]  GUIBox %1,14,%2,14,[GUItextcolor+2]  GUIBox %1,3,%1,13,[GUItextcolor+3]  GUIBox %2,4,%2,14,[GUItextcolor+4]  GUIOuttext %1+3,7,%3,44  GUIOuttext %1+2,6,%3,62%endmacro%macro GUIDMHelpB2 4  mov byte[GUItextcolor],46  mov byte[GUItextcolor+1],42  mov byte[GUItextcolor+2],38  mov byte[GUItextcolor+3],44  mov byte[GUItextcolor+4],40  cmp byte[GUIcwinpress],%4  jne %%nohighlight  mov byte[GUItextcolor],38  mov byte[GUItextcolor+1],40  mov byte[GUItextcolor+2],46  mov byte[GUItextcolor+3],40  mov byte[GUItextcolor+4],44%%nohighlight  GUIBox %1,3,%2,3,[GUItextcolor]  GUIBox %1,4,%2,6,[GUItextcolor+1]  GUIBox %1,7,%2,7,[GUItextcolor+2]  GUIBox %1,3,%1,6,[GUItextcolor+3]  GUIBox %2,4,%2,7,[GUItextcolor+4]  GUIOuttext %1+3,5,%3,44  GUIOuttext %1+2,4,%3,62%endmacro%macro GUIDMHelpB3 4  mov byte[GUItextcolor],46  mov byte[GUItextcolor+1],42  mov byte[GUItextcolor+2],38  mov byte[GUItextcolor+3],44  mov byte[GUItextcolor+4],40  cmp byte[GUIcwinpress],%4  jne %%nohighlight  mov byte[GUItextcolor],38  mov byte[GUItextcolor+1],40  mov byte[GUItextcolor+2],46  mov byte[GUItextcolor+3],40  mov byte[GUItextcolor+4],44%%nohighlight  GUIBox %1,9,%2,9,[GUItextcolor]  GUIBox %1,10,%2,12,[GUItextcolor+1]  GUIBox %1,13,%2,13,[GUItextcolor+2]  GUIBox %1,9,%1,12,[GUItextcolor+3]  GUIBox %2,10,%2,13,[GUItextcolor+4]  GUIOuttext %1+3,11,%3,44  GUIOuttext %1+2,10,%3,62%endmacro%macro GUIDrawMenuM 10  GUIShadow %7,%8,%7+4+%3*6,%8+3+%4*10  GUIBox %1,%2,%1+4+%3*6,%2+3+%4*10,43  mov edi,[GUIcrowpos]  mov ecx,edi  shl edi,8  shl ecx,5  add edi,ecx  lea edi,[edi*5]  shl edi,1  add edi,[vidbuffer]  add edi,%1+17+18*288  mov ecx,6*%3+3  mov edx,1  mov al,73  push edi  call GUIDrawBox  pop edi  add edi,288  mov ecx,6*%3+3  mov edx,7  mov al,72  push edi  call GUIDrawBox  pop edi  add edi,288*7  mov ecx,6*%3+3  mov edx,1  mov al,73  call GUIDrawBox  GUIBox %1+%10,%2,%1+4+%3*6,%2,47  GUIBox %1,%2,%1,%9,45  GUIBox %1,%9,%1+4+%3*6,%9,39  GUIBox %1+4+%3*6,1+%2,%1+4+%3*6,%9,41  mov edi,%5  mov esi,[vidbuffer]  add esi,16+%6+20*288  mov ecx,%4  mov edx,6*%3  call GUIMenuDisplay  mov dword[GUIMenuL],%1+1  mov dword[GUIMenuR],%1+6*%3+3  mov dword[GUIMenuD],18+%4*10%endmacroDisplayMenu:  ; Draw Shadow  GUIShadow 5,7,235,21  ; Display Top Border  GUIBox 0,1,229,1,71  GUIBox 0,2,229,2,70  GUIBox 0,3,229,3,69  GUIBox 0,4,229,4,68  GUIBox 0,5,229,5,67  GUIBox 0,6,229,6,66  GUIBox 0,7,229,7,65  GUIBox 0,8,229,8,64  GUIBox 0,9,229,9,65  GUIBox 0,10,229,10,66  GUIBox 0,11,229,11,67  GUIBox 0,12,229,12,68  GUIBox 0,13,229,13,69  GUIBox 0,14,229,14,70  GUIBox 0,15,229,15,71%ifdef __UNIXSDL__  GUIShadow 238,9,247,20  GUIShadow 249,9,257,20%endif%ifdef __WIN32__  GUIShadow 238,9,247,14  GUIShadow 238,16,247,20  GUIShadow 249,9,257,20%endif.notwinpressa%ifdef __UNIXSDL__  mov byte[GUIMenuItem+36],247  GUIDMHelpB 233,242,GUIMenuItem+36,1  mov byte[GUIMenuItem+36],'x'  GUIDMHelpB 244,253,GUIMenuItem+36,2%endif%ifdef __WIN32__  mov byte[GUIMenuItem+36],249  GUIDMHelpB2 233,242,GUIMenuItem+36,1  mov byte[GUIMenuItem+36],248  GUIDMHelpB3 233,242,GUIMenuItem+36,3  mov byte[GUIMenuItem+36],'x'  GUIDMHelpB 244,253,GUIMenuItem+36,2%endif.notwinpressb  ; Display upper-left box  mov byte[GUIMenuItem+36],25  GUIDMHelp 4,12,GUIMenuItem+6,1  GUIOuttext 4+3,7,GUIMenuItem+36,44  GUIOuttext 4+2,6,GUIMenuItem+36,62  ; Display boxes  GUIDMHelp 17,47,GUIMenuItem,2  GUIDMHelp 52,94,GUIMenuItem+7,3  GUIDMHelp 99,135,GUIMenuItem+14,4  GUIDMHelp 140,188,GUIMenuItem+21,5  GUIDMHelp 193,223,GUIMenuItem+29,6  mov dword[GUIMenuL],0  mov dword[GUIMenuR],0  mov dword[GUIMenuD],0  ; format : x pos, y pos, #charx, #chary, name, xpos+2, xpos+5,22,  ;          19+#chary*10, length of top menu box  cmp byte[GUIcmenupos],1  jne near .nomenu1  GUIDrawMenuM 4,16,30,13,GUIPrevMenuData,6,9,22,149,8 ;19+13*10  mov dword[GUICYLocPtr],MenuDat1.nomenu1  cmp byte[GUIcmenupos],2  jne near .nomenu2  GUIDrawMenuM 17,16,10,9,GUIGameMenuData,19,22,22,109,30 ;19+9*10  mov dword[GUICYLocPtr],MenuDat2.nomenu2  cmp byte[GUIcmenupos],3  jne near .nomenu3  GUIDrawMenuM 52,16,8,11,GUIConfigMenuData,54,57,22,129,42 ;19+11*10  mov dword[GUICYLocPtr],MenuDat3.nomenu3  cmp byte[GUIcmenupos],4  jne near .nomenu4  GUIDrawMenuM 99,16,8,3,GUICheatMenuData,101,104,22,49,36 ;19+3*10  mov dword[GUICYLocPtr],MenuDat4.nomenu4  cmp byte[GUIcmenupos],5  jne near .nomenu5%ifdef __MSDOS__  GUIDrawMenuM 140,16,10,2,GUINetPlayMenuData,142,145,22,39,48 ;19+2*10%else  GUIDrawMenuM 140,16,10,1,GUINetPlayMenuData,142,145,22,29,48 ;19+1*10%endif  mov dword[GUICYLocPtr],MenuDat5.nomenu5  cmp byte[GUIcmenupos],6  jne near .nomenu6  GUIDrawMenuM 193,16,9,7,GUIMiscMenuData,195,198,22,89,30 ;19+5*10  mov dword[GUICYLocPtr],MenuDat6.nomenu6  retGUIMenuDisplay:  xor ebx,ebx.next  mov al,[edi]  push ebx  push ecx  push esi  cmp al,0  je near .notext  cmp al,2  je .darktext  inc edi  mov byte[GUItextcolor],44  cmp byte[GUIcrowpos],bl  je .nodrawshadow  push edi  push esi  add esi,289  call GUIOutputString  pop esi  pop edi.nodrawshadow  mov byte[GUItextcolor],63  call GUIOutputString  inc edi  jmp .text.darktext  inc edi  mov byte[GUItextcolor],42  cmp byte[GUIcrowpos],bl  je .nodrawshadow2  push edi  push esi  add esi,289  call GUIOutputString  pop esi  pop edi.nodrawshadow2  mov byte[GUItextcolor],57  call GUIOutputString  inc edi  jmp .text.notext  add esi,4*288  mov ecx,edx.loop  mov byte[esi],45  mov byte[esi-289],40  mov byte[esi+289],42  inc esi  dec ecx  jnz .loop  add edi,14.text  pop esi  pop ecx  pop ebx  add esi,10*288  inc ebx  dec ecx  jnz near .next  retInitGUI:  cmp byte[newengen],0  je .nong16b  cmp byte[cbitmode],0  je .nong16b  call GetScreen.nong16b%ifdef __MSDOS__  call DOSClearScreen%endif  pushad  call Clear2xSaIBuffer  popad  call GUISetPal  call GUIBufferData  retGUISetPal:  cmp byte[cbitmode],1  je near GUISetPal16  ; set palette  ; Fixed Color Scale = 0 .. 31  mov dx,03C8h  mov al,0  out dx,al  inc dx  out dx,al  out dx,al  out dx,al  inc al  mov dx,03C8h  mov bl,1  out dx,al  inc dx.loopd  mov al,bl  add al,[GUIRAdd]  out dx,al  mov al,bl  add al,[GUIGAdd]  out dx,al  mov al,bl  add al,[GUIBAdd]  out dx,al  inc bl  cmp bl,32  jne .loopd  ; gray scale = 32 .. 63  mov dx,03C8h  mov bl,32  mov al,32  out dx,al  inc dx.loopc  mov al,bl  add al,al  out dx,al  out dx,al  out dx,al  inc bl  cmp bl,64  jne .loopc  ; shadow = 96 .. 127  inc al  mov al,96  mov dx,03C8h

⌨️ 快捷键说明

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