diff --git a/zsnes/src/gui/gui.asm b/zsnes/src/gui/gui.asm index 30a85f44..4d3c988c 100644 --- a/zsnes/src/gui/gui.asm +++ b/zsnes/src/gui/gui.asm @@ -180,8 +180,6 @@ EXTSYM deinitipx, IPXSearchval, ipxlookforconnect, initipx EXTSYM PreparePacketIPX,SendPacketIPX,ipxgetchar,ipxsendchar %endif -NEWSYM GuiAsmStart - %include "gui/guitools.inc" %include "gui/guimisc.inc" %include "gui/guimouse.inc" @@ -777,7 +775,6 @@ NEWSYM GUICTimer, resd 1 NEWSYM GUIOn, resb 1 NEWSYM GUIOn2, resb 1 NEWSYM GUIReset, resb 0 -;GOSPort db 0 NEWSYM CurPalSelect, resb 1 NEWSYM MotionBlur, resb 1 @@ -1916,12 +1913,6 @@ NEWSYM StartGUI mov byte[NetNewNick],0 .nonewnick -;NEWSYM NetChatFirst, db 0 -;NEWSYM NetServer, db 0 -;NEWSYM NetQuitAfter, db 0 -;NEWSYM NetNewNick, times 16 db 0 -;NEWSYM NetFilename, times 512 db 0 - cmp byte[CNetType],20 je near .noautostate cmp byte[AutoState],0 @@ -4444,7 +4435,7 @@ GUISetPal: jnz .next ret -SECTION .bss ;ALIGN=32 +SECTION .bss NEWSYM GUICPC, resw 256 SECTION .text @@ -5664,7 +5655,3 @@ db 137,176,166,37,192,241,169,84,32,85,112,168,154,7,247,146,183,225,246,173 db 57,103,110,236,113,118,203,200,22,87,251,7,138,37,12,84,221,171,51,209 db 242,37,89,73,151,162,139,189,131,209,221,96,107,144,175,79,199,123,98,138 db 226,86,221,254,72,14,126,180,200,171,85,94,120,124,196,225,150,57,219,158 - -SECTION .text - -NEWSYM GuiAsmEnd diff --git a/zsnes/src/gui/guicheat.inc b/zsnes/src/gui/guicheat.inc index 90538d8d..b356d5c1 100644 --- a/zsnes/src/gui/guicheat.inc +++ b/zsnes/src/gui/guicheat.inc @@ -187,7 +187,6 @@ CheatCodeSearchProcess: inc esi dec ecx jnz .exactloop -; CSCurValue dd 0 mov byte[CopyRamToggle],1 mov byte[CheatSearchStatus],1 .nodisplay diff --git a/zsnes/src/gui/guikeys.inc b/zsnes/src/gui/guikeys.inc index 6c27a5b2..3fc09b82 100644 --- a/zsnes/src/gui/guikeys.inc +++ b/zsnes/src/gui/guikeys.inc @@ -650,9 +650,6 @@ GUIgetcurrentinput: ret GUITCPIPKeys: -;GUINetTextk2 db ' 0. 0. 0. 0',0 -;GUINetTextl2 db '7845',0 -;GUINetTextm2 db 0,0,0 cmp byte[GUINetTextm2],1 je near .section2 mov edi,TCPIPAddress diff --git a/zsnes/src/gui/guiload.inc b/zsnes/src/gui/guiload.inc index 1d3e823b..a45ece7a 100644 --- a/zsnes/src/gui/guiload.inc +++ b/zsnes/src/gui/guiload.inc @@ -189,7 +189,6 @@ GUIloadfilename: cmp byte[CNetType],20 jne near .nocnettype mov byte[netlastloaded],1 -; FileNameMod times 29 db 0 cmp byte[GUIcmenupos],1 jne .nomenuout mov byte[GUIcmenupos],0 diff --git a/zsnes/src/gui/guinetpl.inc b/zsnes/src/gui/guinetpl.inc index 07242f05..972b0650 100644 --- a/zsnes/src/gui/guinetpl.inc +++ b/zsnes/src/gui/guinetpl.inc @@ -1385,7 +1385,6 @@ ProcessRemoteCommand: call RemoteSendChar jmp .finsend2 .nolatencych -; FileNameMod times 29 db 0 cmp al,10 jne .nosendfn xor ebx,ebx diff --git a/zsnes/src/gui/guiwindp.inc b/zsnes/src/gui/guiwindp.inc index 072a8fce..8cb72108 100644 --- a/zsnes/src/gui/guiwindp.inc +++ b/zsnes/src/gui/guiwindp.inc @@ -3523,9 +3523,6 @@ Cheatmodeadd: .nodisplay ret -;CheatSrcByteSize db 0 -;CheatSrcByteBase db 0 -;CheatSrcSearchType db 0 SECTION .bss CheatWinMode resb 1 CheatSearchStatus resb 1 @@ -4474,18 +4471,6 @@ DisplayNetOptnsChatWindow: .zero GUIOuttextwin2 8,6,130,GUINetTextV GUIOuttextwin2 8,110,130,GUINetTexta - - ; ############# -; mov eax,[CViewLoc] -; shr eax,5 -; add eax,12 -; mov [TViewLoc],eax -; 181,112,167 -;CViewLoc dd 0 -;NViewLoc dd 0 -;TViewLoc dd 0 -; 15,181,112 -; DrawSlideBarWin 8,181,15,[NViewLoc],[TViewLoc],12,97,GUINCStA ret SECTION .bss @@ -5232,10 +5217,10 @@ DisplayGUIOptns: mov byte[GUItextcolor],223 ret -;mousewrap db 0 ; 0 = mouse boundries, 1 = mouse wrap -;mouseshad db 1 ; 0 = no mouse shadow, 1 = mouse shadow -;lastcursres db 0 ; 0 = go to load, 1 = go to previous menu, 2 = no menu -;resetposn db 1 ; 0 = no window reset, 1 = window reset +;mousewrap 0 ; 0 = mouse boundries, 1 = mouse wrap +;mouseshad 1 ; 0 = no mouse shadow, 1 = mouse shadow +;lastcursres 0 ; 0 = go to load, 1 = go to previous menu, 2 = no menu +;resetposn 1 ; 0 = no window reset, 1 = window reset SECTION .data GUIGUIOptnsText1 db 'COLOR:',0 @@ -6153,10 +6138,6 @@ GUIComboData resb 50 GUIScrolBufA resb 21 GUIScrolBufB resb 10 - -;CombinDataGlob times 3300 db 0 ; 20-name, 42-combo, 2-key#, 1-P#, 1-ff -;CombinDataLocl times 3300 db 0 - SECTION .data GUIComboText1 db 'DESCRIPTION',0 GUIComboText2 db 'KEY P# LH',0 diff --git a/zsnes/src/gui/menu.asm b/zsnes/src/gui/menu.asm index 819d3336..ef32e015 100644 --- a/zsnes/src/gui/menu.asm +++ b/zsnes/src/gui/menu.asm @@ -1,3240 +1,1616 @@ -;Copyright (C) 1997-2004 ZSNES Team ( zsknight@zsnes.com / _demo_@zsnes.com ) - +;Copyright (C) 1997-2005 ZSNES Team ( zsknight@zsnes.com / _demo_@zsnes.com ) ; - ;This program is free software; you can redistribute it and/or - ;modify it under the terms of the GNU General Public License - ;as published by the Free Software Foundation; either - ;version 2 of the License, or (at your option) any later - ;version. - ; - ;This program is distributed in the hope that it will be useful, - ;but WITHOUT ANY WARRANTY; without even the implied warranty of - ;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - ;GNU General Public License for more details. - ; - ;You should have received a copy of the GNU General Public License - ;along with this program; if not, write to the Free Software - ;Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - %include "macros.mac" - - EXTSYM DSPMem,FPSOn,Makemode7Table,MessageOn,vesa2red10,scanlines,smallscreenon - EXTSYM MsgCount,Msgptr,OutputGraphicString,OutputGraphicString16b - EXTSYM PrepareSaveState,ResetState,breakatsignb,breakatsignc,cvidmode - EXTSYM cbitmode,copyvid,curblank,drawhline,drawhline16b,drawvline - EXTSYM drawvline16b,fnames,frameskip,mode7tab,pressed,spcA - EXTSYM spcBuffera,spcNZ,spcP,spcPCRam,spcRam,spcRamDP,spcS,spcX,spcY - EXTSYM spcon,vesa2_bpos,vesa2_clbit,vesa2_gpos,vesa2_rpos,vesa2selec - EXTSYM vidbuffer,spritetablea,sprlefttot,newengen,spcextraram,resolutn - EXTSYM Open_File,Close_File,Read_File,Write_File,Create_File,Get_Key,Get_Date - EXTSYM continueprognokeys,ForceNonTransp,GUIOn,Check_Key,JoyRead - EXTSYM GetScreen,SSKeyPressed,SPCKeyPressed,StopSound,StartSound - EXTSYM ExecExitOkay,t1cc - EXTSYM Clear2xSaIBuffer - EXTSYM romdata,romtype,ScreenShotFormat - EXTSYM Voice0Disable,Voice1Disable,Voice2Disable,Voice3Disable - EXTSYM Voice4Disable,Voice5Disable,Voice6Disable,Voice7Disable - EXTSYM SRAMDrive, SRAMDir, SPCPath, SnapPath, Change_Dir, CHPath, ZFileCHDir - %ifndef NO_PNG - EXTSYM Grab_PNG_Data - %endif - - %macro ChangeDir 1 - cmp byte[%1],0 - je %%end - pushad - mov ebx,%1 - mov [CHPath],ebx - call ZFileCHDir - popad - %%end - %endmacro - - %macro ChangeDirSRAM 0 - pushad - mov dl,[SRAMDrive] - mov ebx,SRAMDir - call Change_Dir - popad - %endmacro - - -NEWSYM MenuAsmStart - - - - - - - - - GUIBufferData: - mov ecx,16384 - cmp byte[cbitmode],1 - jne near .16b - add ecx,16384 - .16b - ; copy to spritetable - mov esi,[vidbuffer] - mov edi,[spritetablea] - .loop - mov eax,[esi] - mov [edi],eax - add esi,4 - add edi,4 - dec ecx - jnz .loop - mov edi,sprlefttot - mov ecx,64*5 - .a - mov dword[edi],0 - add edi,4 - dec ecx - jnz .a - ret - - GUIUnBuffer: - mov ecx,16384 - cmp byte[cbitmode],1 - jne near .16b - add ecx,16384 - .16b - ; copy from spritetable - mov esi,[vidbuffer] - mov edi,[spritetablea] - .loop - mov eax,[edi] - mov [esi],eax - add esi,4 - add edi,4 - dec ecx - jnz .loop - ret - - SECTION .bss - NEWSYM nextmenupopup, resb 1 - NEWSYM NoInputRead, resb 1 - NEWSYM PrevMenuPos, resb 1 - NEWSYM MenuDisplace, resd 1 - NEWSYM MenuDisplace16, resd 1 - NEWSYM MenuNoExit, resb 1 - NEWSYM SPCSave, resb 1 - - %ifdef SPCDUMP - SECTION .data - NEWSYM SPCSave_dump, db 0 - SECTION .bss - - EXTSYM SPCSave_buffer, SPCSave_ports - NEWSYM SPCSave_handle, resd 1 - %endif - - SECTION .text - - NEWSYM showmenu - mov byte[ForceNonTransp],1 - cmp byte[cbitmode],1 - je near .nopalread - mov edi,[vidbuffer] - add edi,100000 - mov dx,03C7h - mov al,0 - out dx,al - mov dx,03C9h - mov ecx,768 - mov byte[edi],12 - inc edi - .b - in al,dx - shl al,2 - mov [edi],al - inc edi - dec ecx - jnz .b - .nopalread - - cmp byte[cbitmode],1 - je near .nopal16b - ; set palette of colors 128,144, and 160 to white, blue, and red - mov al,128 - mov dx,03C8h - out dx,al - inc dx - mov al,63 - out dx,al - out dx,al - out dx,al - mov al,144 - mov dx,03C8h - out dx,al - inc dx - xor al,al - out dx,al - out dx,al - mov al,50 - out dx,al - mov al,160 - mov dx,03C8h - out dx,al - inc dx - mov al,45 - out dx,al - xor al,al - out dx,al - out dx,al - .nopal16b - - mov byte[NoInputRead],0 - cmp byte[newengen],0 - je .nong16b - cmp byte[cbitmode],0 - je .nong16b - call GetScreen - .nong16b - cmp byte[SSKeyPressed],1 - jne .nosskey - mov byte[SSKeyPressed],0 - call savepcx - jmp .nopalwrite - .nosskey - cmp byte[SPCKeyPressed],1 - je near .savespckey - test byte[pressed+14],1 - jz .nof12 - call savepcx - jmp .nopalwrite - .nof12 - mov dword[menucloc],0 - cmp byte[nextmenupopup],0 - je .nomenuinc2 - mov byte[pressed+1Ch],0 - mov dword[menucloc],40*288 - cmp byte[PrevMenuPos],1 - jne .nomenuinc - mov dword[menucloc],50*288 - .nomenuinc - cmp byte[PrevMenuPos],2 - jne .nomenuinc2 - mov dword[menucloc],60*288 - .nomenuinc2 - cmp byte[PrevMenuPos],3 - jne .nomenuinc3 - mov dword[menucloc],70*288 - .nomenuinc3 - - mov dword[menudrawbox8b.stringi+13],' BMP' - %ifndef NO_PNG - cmp byte[ScreenShotFormat],0 - je .normalscrn - mov dword[menudrawbox8b.stringi+13],' PNG' - %endif - .normalscrn - cmp byte[cbitmode],1 - je near .nopcx - mov dword[menudrawbox8b.stringi+13],' PCX' - .nopcx - mov byte[nextmenupopup],0 - mov byte[menu16btrans],0 - mov byte[pressed+1],0 - mov byte[pressed+59],0 - mov byte[curblank],00h - call GUIBufferData - ; Draw box - call menudrawbox8b - call menudrawbox8b - cmp byte[newengen],0 - je .notng - mov byte[GUIOn],1 - .notng - pushad - call copyvid - popad - call StopSound - .nextkey - call GUIUnBuffer - call menudrawbox8b - push eax - call copyvid - pop eax - - call JoyRead - call Check_Key - or al,al - jz .nextkey - call Get_Key - cmp al,0 - jne near .processextend - - call Get_Key - cmp al,72 - jne .noup - cmp dword[menucloc],0 - jne .nogoup - add dword[menucloc],80*288 - .nogoup - sub dword[menucloc],10*288 - call menudrawbox8b - ; mov al,[newengen] ; WTF? - ; mov byte[newengen],0 - - ; mov [newengen],al - jmp .nextkey - .noup - cmp al,80 - jne .nodown - cmp dword[menucloc],70*288 - jne .nogodown - sub dword[menucloc],80*288 - .nogodown - add dword[menucloc],10*288 - call menudrawbox8b - ; mov al,[newengen] - ; mov byte[newengen],0 - ; push eax - call copyvid - ; pop eax - ; mov [newengen],al - jmp .nextkey - .nodown - jmp .nextkey - .processextend - cmp al,27 - je near .exitloop - cmp al,13 - je .done - jmp .nextkey - .done - call GUIUnBuffer - ; mov al,[newengen] - ; mov byte[newengen],0 - ; push eax - call copyvid - ; pop eax - ; mov [newengen],al - cmp dword[menucloc],0 - jne .nosavepcx - call savepcx - .nosavepcx - cmp dword[menucloc],40*288 - jne .nosavepcx2 - call savepcx - mov byte[ExecExitOkay],0 - mov byte[nextmenupopup],3 - mov byte[NoInputRead],1 - mov byte[t1cc],0 - mov byte[PrevMenuPos],0 - .nosavepcx2 - cmp dword[menucloc],50*288 - jne .noskipframe - mov byte[ExecExitOkay],0 - mov byte[nextmenupopup],3 - mov byte[NoInputRead],1 - mov byte[t1cc],0 - mov byte[PrevMenuPos],1 - .noskipframe - cmp dword[menucloc],70*288 - jne .noimagechange - cmp byte[cbitmode],0 - je .noimagechange - xor byte[ScreenShotFormat],1 - mov byte[MenuNoExit],1 - mov byte[ExecExitOkay],0 - mov byte[nextmenupopup],1 - mov byte[NoInputRead],1 - mov byte[t1cc],0 - mov byte[PrevMenuPos],3 - .noimagechange - cmp dword[menucloc],60*288 - jne .nomovewin - mov byte[MenuNoExit],1 - mov byte[ExecExitOkay],0 - mov byte[nextmenupopup],1 - mov byte[NoInputRead],1 - mov byte[t1cc],0 - mov byte[PrevMenuPos],2 - cmp dword[MenuDisplace],0 - je .movewin - mov dword[MenuDisplace],0 - mov dword[MenuDisplace16],0 - jmp .nomovewin - .movewin - mov dword[MenuDisplace],90*288 - mov dword[MenuDisplace16],90*288*2 - .nomovewin - cmp dword[menucloc],10*288 - jne .nofps - cmp byte[frameskip],0 - je .yesfs - mov dword[Msgptr],.unablefps - mov eax,[MsgCount] - mov [MessageOn],eax - jmp .nofps - .yesfs - xor byte[FPSOn],1 - .nofps - cmp dword[menucloc],20*288 - jne near .nospcsave - .savespckey - cmp byte[spcon],0 - je .nospc - - %ifdef SPCDUMP - cmp byte[SPCSave_dump], 1 - jne .start_dump - - mov ebx, [SPCSave_handle] - mov eax, -1 - mov [SPCSave_buffer], eax - mov ecx, 4 - mov edx, SPCSave_buffer - call Write_File - call Close_File - mov byte[SPCSave_dump], 0 - jmp .nospcsave - .start_dump - %endif - - ; cmp byte[newengen],1 - ; je .unablespc - mov dword[Msgptr],.search - mov eax,[MsgCount] - mov [MessageOn],eax - ; mov al,[newengen] - ; mov byte[newengen],0 - ; push eax - call copyvid - ; pop eax - ; mov [newengen],al - ; call breakatsignc - ; cmp byte[prbreak],1 - ; je .yesesc - mov byte[SPCSave],1 - call breakatsignb - mov byte[SPCSave],0 - ; cmp byte[prbreak],1 - ; je .yesesc - call savespcdata - - mov byte[curblank],40h - mov dword[Msgptr],.saved - mov eax,[MsgCount] - mov [MessageOn],eax - jmp .nospcsave - .nospc - mov dword[Msgptr],.nosound - mov eax,[MsgCount] - mov [MessageOn],eax - jmp .nospcsave - .unablespc - mov dword[Msgptr],.unable - mov eax,[MsgCount] - mov [MessageOn],eax - jmp .nospcsave - .yesesc - mov dword[Msgptr],.escpress - mov eax,[MsgCount] - mov [MessageOn],eax - .nospcsave - cmp dword[menucloc],30*288 - jne .nosnddmp - call dumpsound - mov dword[Msgptr],.sndbufsav - mov eax,[MsgCount] - mov [MessageOn],eax - .nosnddmp - cmp byte[SPCKeyPressed],1 - jne .exitloop - mov byte[SPCKeyPressed],0 - jmp .nopalwrite - .exitloop - call GUIUnBuffer - ; mov al,[newengen] - ; mov byte[newengen],0 - ; push eax - call copyvid - ; pop eax - ; mov [newengen],al - cmp byte[cbitmode],1 - je near .nopalwrite - mov edi,[vidbuffer] - add edi,100000 - mov dx,03C8h - mov al,0 - out dx,al - mov dx,03C9h - mov ecx,768 - inc edi - .c - mov al,[edi] - shr al,2 - out dx,al - inc edi - dec ecx - jnz .c - .nopalwrite - mov eax,pressed - mov ecx,256 - .looppr - cmp byte[eax],1 - jne .notpr - mov byte[eax],2 - .notpr - inc eax - dec ecx - jnz .looppr - ; mov byte[pressed+1],2 - ; cmp byte[pressed+59],1 - ; jne .not59 - ; mov byte[pressed+59],2 - ;.not59 - ; cmp byte[pressed+28],1 - ; jne .not28 - ; mov byte[pressed+28],2 - ;.not28 - call StartSound - mov byte[ForceNonTransp],0 - mov byte[GUIOn],0 - call Clear2xSaIBuffer - cmp byte[MenuNoExit],1 - je .noexitmenu - jmp continueprognokeys - .noexitmenu - mov byte[MenuNoExit],0 - jmp showmenu - - SECTION .data - .unablefps db 'NEED AUTO FRAMERATE ON',0 - .sndbufsav db 'BUFFER SAVED AS SOUNDDMP.RAW',0 - .search db 'SEARCHING FOR SONG START.',0 - .nosound db 'SOUND MUST BE ENABLED.',0 - .unable db 'CANNOT USE IN NEW GFX ENGINE.',0 - .escpress db 'ESC TERMINATED SEARCH.',0 - .saved db '.SPC FILE SAVED.',0 - SECTION .text - - NEWSYM menudrawbox8b - cmp byte[cbitmode],1 - je near menudrawbox16b - ; draw a small blue box with a white border - mov esi,40+20*288 - add esi,[vidbuffer] - add esi,[MenuDisplace] - mov ecx,150 - mov al,95 - .loop - mov byte[esi],144 - inc esi - dec ecx - jnz .loop - add esi,288-150 - dec al - mov ecx,150 - jnz .loop - mov al,128 - ; Draw lines - mov esi,40+20*288 - add esi,[vidbuffer] - add esi,[MenuDisplace] - mov ecx,150 - call drawhline - mov esi,40+20*288 - add esi,[vidbuffer] - add esi,[MenuDisplace] - mov ecx,95 - call drawvline - mov esi,40+114*288 - add esi,[vidbuffer] - add esi,[MenuDisplace] - mov ecx,150 - call drawhline - mov esi,40+32*288 - add esi,[vidbuffer] - add esi,[MenuDisplace] - mov ecx,150 - call drawhline - mov esi,189+20*288 - add esi,[vidbuffer] - add esi,[MenuDisplace] - mov ecx,95 - call drawvline - call menudrawcursor8b - - mov esi,45+23*288 - add esi,[vidbuffer] - add esi,[MenuDisplace] - mov edi,.string - call OutputGraphicString - mov esi,45+35*288 - add esi,[vidbuffer] - add esi,[MenuDisplace] - mov edi,.stringa - call OutputGraphicString - mov esi,45+45*288 - add esi,[vidbuffer] - add esi,[MenuDisplace] - mov edi,.stringb - test byte[FPSOn],1 - jz .nofps - mov edi,.stringc - .nofps - call OutputGraphicString - mov esi,45+55*288 - add esi,[vidbuffer] - add esi,[MenuDisplace] - mov edi,.stringd - call OutputGraphicString - mov esi,45+65*288 - add esi,[vidbuffer] - add esi,[MenuDisplace] - mov edi,.stringe - call OutputGraphicString - mov esi,45+75*288 - add esi,[vidbuffer] - add esi,[MenuDisplace] - mov edi,.stringf - call OutputGraphicString - mov esi,45+85*288 - add esi,[vidbuffer] - add esi,[MenuDisplace] - mov edi,.stringg - call OutputGraphicString - mov esi,45+95*288 - add esi,[vidbuffer] - add esi,[MenuDisplace] - mov edi,.stringh - call OutputGraphicString - mov esi,45+105*288 - add esi,[vidbuffer] - add esi,[MenuDisplace] - mov edi,.stringi - call OutputGraphicString - ; mov al,[newengen] - ; mov byte[newengen],0 - ; push eax - call copyvid - ; pop eax - ; mov [newengen],al - ret - - SECTION .data - .string db 'MISC OPTIONS',0 - .stringa db 'SAVE SNAPSHOT',0 - .stringb db 'SHOW FPS',0 - .stringc db 'HIDE FPS',0 - .stringd db 'SAVE SPC DATA',0 - .stringe db 'SOUND BUFFER DUMP',0 - .stringf db 'SNAPSHOT/INCR FRM',0 - .stringg db 'INCR FRAME ONLY',0 - .stringh db 'MOVE THIS WINDOW',0 - .stringi db 'IMAGE FORMAT: ---',0 - SECTION .text - - NEWSYM menudrawcursor8b - cmp byte[cbitmode],1 - je near menudrawcursor16b - ; draw a small red box - mov esi,41+34*288 - add esi,[menucloc] - add esi,[vidbuffer] - add esi,[MenuDisplace] - mov ecx,148 - mov al,9 - .loop - mov byte[esi],160 - inc esi - dec ecx - jnz .loop - add esi,288-148 - dec al - mov ecx,148 - jnz .loop mov al,128 - ret - - -SECTION .bss ;ALIGN=32 - -NEWSYM menucloc, resd 1 - -SECTION .text - - - -NEWSYM menudrawbox16b - - ; draw shadow behind box - - cmp byte[menu16btrans],0 - - jne .noshadow - - mov byte[menu16btrans],1 - - mov esi,50*2+30*288*2 - - add esi,[vidbuffer] - - add esi,[MenuDisplace16] - - mov ecx,150 - - mov al,85 - - mov ah,5 - -.loop16b2 - - mov dx,[esi] - - and dx,[vesa2_clbit] - - shr dx,1 - - mov [esi],dx - - add esi,2 - - dec ecx - - jnz .loop16b2 - - add esi,288*2-150*2 - - dec al - - mov ecx,150 - - jnz .loop16b2 - -.noshadow - - - - mov ax,01Fh - - mov cl,[vesa2_rpos] - - shl ax,cl - - mov [.allred],ax - - mov ax,012h - - mov cl,[vesa2_bpos] - - shl ax,cl - - mov dx,ax - - mov ax,01h - - mov cl,[vesa2_gpos] - - shl ax,cl - - mov bx,ax - - mov ax,01h - - mov cl,[vesa2_rpos] - - shl ax,cl - - or bx,ax - - - - ; draw a small blue box with a white border - - mov esi,40*2+20*288*2 - - add esi,[vidbuffer] - - add esi,[MenuDisplace16] - - mov ecx,150 - - mov al,95 - - mov ah,5 - -.loop16b - - mov [esi],dx - - add esi,2 - - dec ecx - - jnz .loop16b - - add esi,288*2-150*2 - - dec ah - - jnz .nocolinc16b - - add dx,bx - - mov ah,5 - -.nocolinc16b - - dec al - - mov ecx,150 - - jnz .loop16b - - - - ; Draw lines - - mov ax,0FFFFh - - mov esi,40*2+20*288*2 - - add esi,[vidbuffer] - - add esi,[MenuDisplace16] - - mov ecx,150 - - call drawhline16b - - mov esi,40*2+20*288*2 - - add esi,[vidbuffer] - - add esi,[MenuDisplace16] - - mov ecx,95 - - call drawvline16b - - mov esi,40*2+114*288*2 - - add esi,[vidbuffer] - - add esi,[MenuDisplace16] - - mov ecx,150 - - call drawhline16b - - mov esi,40*2+32*288*2 - - add esi,[vidbuffer] - - add esi,[MenuDisplace16] - - mov ecx,150 - - call drawhline16b - - mov esi,189*2+20*288*2 - - add esi,[vidbuffer] - - add esi,[MenuDisplace16] - - mov ecx,95 - - call drawvline16b - - call menudrawcursor16b - - - - mov esi,45*2+23*288*2 - - add esi,[vidbuffer] - - add esi,[MenuDisplace16] - - mov edi,menudrawbox8b.string - - call OutputGraphicString16b - - mov esi,45*2+35*288*2 - - add esi,[vidbuffer] - - add esi,[MenuDisplace16] - - mov edi,menudrawbox8b.stringa - - call OutputGraphicString16b - - mov esi,45*2+45*288*2 - - add esi,[vidbuffer] - - add esi,[MenuDisplace16] - - mov edi,menudrawbox8b.stringb - - test byte[FPSOn],1 - - jz .nofps - - mov edi,menudrawbox8b.stringc - -.nofps - - call OutputGraphicString16b - - mov esi,45*2+55*288*2 - - add esi,[vidbuffer] - - add esi,[MenuDisplace16] - - mov edi,menudrawbox8b.stringd - - call OutputGraphicString16b - - mov esi,45*2+65*288*2 - - add esi,[vidbuffer] - - add esi,[MenuDisplace16] - - mov edi,menudrawbox8b.stringe - - call OutputGraphicString16b - - mov esi,45*2+75*288*2 - - add esi,[vidbuffer] - - add esi,[MenuDisplace16] - - mov edi,menudrawbox8b.stringf - - call OutputGraphicString16b - - mov esi,45*2+85*288*2 - - add esi,[vidbuffer] - - add esi,[MenuDisplace16] - - mov edi,menudrawbox8b.stringg - - call OutputGraphicString16b - - mov esi,45*2+95*288*2 - - add esi,[vidbuffer] - - add esi,[MenuDisplace16] - - mov edi,menudrawbox8b.stringh - - call OutputGraphicString16b - - mov esi,45*2+105*288*2 - - add esi,[vidbuffer] - - add esi,[MenuDisplace16] - - mov edi,menudrawbox8b.stringi - - call OutputGraphicString16b - -; mov al,[newengen] - -; mov byte[newengen],0 - -; push eax - - call copyvid - -; pop eax - -; mov [newengen],al - - ret - - - SECTION .bss +NEWSYM menucloc, resd 1 +SECTION .text +NEWSYM menudrawbox16b + ; draw shadow behind box + cmp byte[menu16btrans],0 + jne .noshadow + mov byte[menu16btrans],1 + mov esi,50*2+30*288*2 + add esi,[vidbuffer] + add esi,[MenuDisplace16] + mov ecx,150 + mov al,85 + mov ah,5 +.loop16b2 + mov dx,[esi] + and dx,[vesa2_clbit] + shr dx,1 + mov [esi],dx + add esi,2 + dec ecx + jnz .loop16b2 + add esi,288*2-150*2 + dec al + mov ecx,150 + jnz .loop16b2 +.noshadow + + mov ax,01Fh + mov cl,[vesa2_rpos] + shl ax,cl + mov [.allred],ax + mov ax,012h + mov cl,[vesa2_bpos] + shl ax,cl + mov dx,ax + mov ax,01h + mov cl,[vesa2_gpos] + shl ax,cl + mov bx,ax + mov ax,01h + mov cl,[vesa2_rpos] + shl ax,cl + or bx,ax + + ; draw a small blue box with a white border + mov esi,40*2+20*288*2 + add esi,[vidbuffer] + add esi,[MenuDisplace16] + mov ecx,150 + mov al,95 + mov ah,5 +.loop16b + mov [esi],dx + add esi,2 + dec ecx + jnz .loop16b + add esi,288*2-150*2 + dec ah + jnz .nocolinc16b + add dx,bx + mov ah,5 +.nocolinc16b + dec al + mov ecx,150 + jnz .loop16b + + ; Draw lines + mov ax,0FFFFh + mov esi,40*2+20*288*2 + add esi,[vidbuffer] + add esi,[MenuDisplace16] + mov ecx,150 + call drawhline16b + mov esi,40*2+20*288*2 + add esi,[vidbuffer] + add esi,[MenuDisplace16] + mov ecx,95 + call drawvline16b + mov esi,40*2+114*288*2 + add esi,[vidbuffer] + add esi,[MenuDisplace16] + mov ecx,150 + call drawhline16b + mov esi,40*2+32*288*2 + add esi,[vidbuffer] + add esi,[MenuDisplace16] + mov ecx,150 + call drawhline16b + mov esi,189*2+20*288*2 + add esi,[vidbuffer] + add esi,[MenuDisplace16] + mov ecx,95 + call drawvline16b + call menudrawcursor16b + + mov esi,45*2+23*288*2 + add esi,[vidbuffer] + add esi,[MenuDisplace16] + mov edi,menudrawbox8b.string + call OutputGraphicString16b + mov esi,45*2+35*288*2 + add esi,[vidbuffer] + add esi,[MenuDisplace16] + mov edi,menudrawbox8b.stringa + call OutputGraphicString16b + mov esi,45*2+45*288*2 + add esi,[vidbuffer] + add esi,[MenuDisplace16] + mov edi,menudrawbox8b.stringb + test byte[FPSOn],1 + jz .nofps + mov edi,menudrawbox8b.stringc +.nofps + call OutputGraphicString16b + mov esi,45*2+55*288*2 + add esi,[vidbuffer] + add esi,[MenuDisplace16] + mov edi,menudrawbox8b.stringd + call OutputGraphicString16b + mov esi,45*2+65*288*2 + add esi,[vidbuffer] + add esi,[MenuDisplace16] + mov edi,menudrawbox8b.stringe + call OutputGraphicString16b + mov esi,45*2+75*288*2 + add esi,[vidbuffer] + add esi,[MenuDisplace16] + mov edi,menudrawbox8b.stringf + call OutputGraphicString16b + mov esi,45*2+85*288*2 + add esi,[vidbuffer] + add esi,[MenuDisplace16] + mov edi,menudrawbox8b.stringg + call OutputGraphicString16b + mov esi,45*2+95*288*2 + add esi,[vidbuffer] + add esi,[MenuDisplace16] + mov edi,menudrawbox8b.stringh + call OutputGraphicString16b + mov esi,45*2+105*288*2 + add esi,[vidbuffer] + add esi,[MenuDisplace16] + mov edi,menudrawbox8b.stringi + call OutputGraphicString16b +; mov al,[newengen] +; mov byte[newengen],0 +; push eax + call copyvid +; pop eax +; mov [newengen],al + ret + +SECTION .bss .allred resw 1 - .blue resw 1 - .stepb resw 1 - - NEWSYM menu16btrans, resb 1 - - SECTION .text - - NEWSYM menudrawcursor16b - ; draw a small red box - mov esi,41*2+34*288*2 - add esi,[menucloc] - add esi,[menucloc] - add esi,[vidbuffer] - add esi,[MenuDisplace16] - mov ecx,148 - mov al,9 - mov bx,[menudrawbox16b.allred] - .loop - mov [esi],bx - add esi,2 - dec ecx - jnz .loop - add esi,288*2-148*2 - dec al - mov ecx,148 - jnz .loop - mov al,128 - ret - - NEWSYM savespcdata - sub dword[spcPCRam],spcRam - ; Assemble N/Z flags into P - and byte[spcP],0FDh - test byte[spcNZ],0FFh - jnz .nozero - or byte[spcP],02h - .nozero - and byte[spcP],07Fh - test byte[spcNZ],80h - jz .noneg - or byte[spcP],80h - .noneg - mov ax,[spcPCRam] - mov [ssdatst+37],ax - mov al,[spcA] - mov [ssdatst+39],al - mov al,[spcX] - mov [ssdatst+40],al - mov al,[spcY] - mov [ssdatst+41],al - mov al,[spcP] - mov [ssdatst+42],al - mov al,[spcS] - mov [ssdatst+43],al - add dword[spcPCRam],spcRam - .savestuff - ChangeDir SPCPath - sub dword[spcPCRam],spcRam - sub dword[spcRamDP],spcRam - call PrepareSaveState - ; Copy from fnames to .spcfname, replacing .srm with .spc - mov esi,fnames+1 - mov edi,.spcfname - .next - mov al,[esi] - mov [edi],al - inc esi - inc edi - cmp al,'.' - jne .next - ; Save stuff - mov byte[edi],'s' - mov byte[edi+1],'p' - mov byte[edi+2],'c' - mov byte[edi+3],0 - ; Find an unoccupied file - .tryagainspc - mov edx,.spcfname - call Open_File - jc .nofileopen - mov bx,ax - call Close_File - cmp byte[edi+2],'c' - jne .notc - mov byte[edi+2],'1' - jmp .tryagainspc - .notc - cmp byte[edi+2],'9' - je .donext10 - inc byte[edi+2] - jmp .tryagainspc - .donext10 - mov al,[edi+1] - cmp al,[edi+2] - je .nofileopen - cmp byte[edi+1],'p' - jne .notp - mov byte[edi+1],'0' - .notp - inc byte[edi+1] - mov byte[edi+2],'0' - jmp .tryagainspc - .nofileopen - xor al,al - mov al,[edi+1] - mov [showmenu.saved+2],al - mov al,[edi+2] - mov [showmenu.saved+3],al - ; copy spcextra ram to dspmem+192 - mov esi,spcextraram - mov edi,DSPMem+192 - mov ecx,64 - .loop - mov al,[esi] - mov [edi],al - inc esi - inc edi - dec ecx - jnz .loop - - ; Copy Game Title - - mov esi,[romdata] - add esi,7FC0h - cmp byte[romtype],2 - jne .nohirom2 - add esi,8000h - .nohirom2 - mov ecx,20 - mov edi,ssdatst+46+32 - .romloop - mov al,[esi] - mov [edi],al - inc esi - inc edi - dec ecx - jnz .romloop - ; Copy Date of spc dumped - call Get_Date - mov [ssdatst+09Eh],dl - mov [ssdatst+09Fh],dh - mov [ssdatst+0A0h],cx - - ; Set Channel Disables - mov byte[ssdatst+0D0h],0 - cmp byte[Voice0Disable],1 - je .enable0 - or byte[ssdatst+0D0h],1 - .enable0 - cmp byte[Voice1Disable],1 - je .enable1 - or byte[ssdatst+0D0h],2 - .enable1 - cmp byte[Voice2Disable],1 - je .enable2 - or byte[ssdatst+0D0h],4 - .enable2 - cmp byte[Voice3Disable],1 - je .enable3 - or byte[ssdatst+0D0h],8 - .enable3 - cmp byte[Voice4Disable],1 - je .enable4 - or byte[ssdatst+0D0h],16 - .enable4 - cmp byte[Voice5Disable],1 - je .enable5 - or byte[ssdatst+0D0h],32 - .enable5 - cmp byte[Voice6Disable],1 - je .enable6 - or byte[ssdatst+0D0h],64 - .enable6 - cmp byte[Voice7Disable],1 - je .enable7 - or byte[ssdatst+0D0h],128 - .enable7 - - -; times 32 db 0 ; Title of game (Offset 48) - -; times 32 db 0 ; Song Name - -; times 32 db 0 ; Author of Song - -; times 32 db 0 ; Name of dumper - -; times 32 db 0 ; Comments - -; times 4 db 0 ; date of spc dumped - -; times 4 db 0 ; time in milliseconds before fading out - -; times 2 db 0 ; fade-out length in milliseconds - -; db 0 ; default channel enables - - +; times 32 ; Title of game (Offset 48) +; times 32 ; Song Name +; times 32 ; Author of Song +; times 32 ; Name of dumper +; times 32 ; Comments +; times 4 ; date of spc dumped +; times 4 ; time in milliseconds before fading out +; times 2 ; fade-out length in milliseconds +; 0 ; default channel enables mov edx,.spcfname - call Create_File - mov bx,ax - mov ecx,256 - mov edx,ssdatst - call Write_File - - ; Save SPC stuff - mov ecx,65536 - mov edx,spcRam - call Write_File - mov ecx,256 - mov edx,DSPMem - call Write_File - - %ifdef SPCDUMP - mov [SPCSave_handle], ebx - %else - call Close_File - %endif - - add dword[spcPCRam],spcRam - add dword[spcRamDP],spcRam - call ResetState - - %ifdef SPCDUMP - - ; w00t, reg dump crapola - ; using a time reference because I don't feel like adding - ; cycle counting to the SPC emulation just for this - - mov byte[SPCSave_dump],1 - - mov eax, [spcRam+0F4h] - mov [SPCSave_ports], eax - xor eax, eax - mov [SPCSave_buffer], eax - - %endif - ChangeDirSRAM - ret - - SECTION .bss - .spcfname resb 128 - - SECTION .data - ;.SPC File Format - - ;Offset 00000h - File Header : SNES-SPC700 Sound File Data v0.10 - ;Offset 00021h - 0x26,0x26,0x26 - ;Offset 00024h - Version #(/100) - ;Offset 00025h - PC Register value (1 Word) - ;Offset 00027h - A Register Value (1 byte) - ;Offset 00028h - X Register Value (1 byte) - ;Offset 00029h - Y Register Value (1 byte) ;Offset 0002Ah - Status Flags Value (1 byte) - ;Offset 0002Bh - Stack Register Value (1 byte) - ;Offset 0002Ch-000FFh - Reserved For Future Use - ;Offset 00100h-100FFh - SPCRam - ;Offset 10100h-101FFh - DSPRam - - ;Offset 0002Eh-0004Dh - SubTitle/Song Name - ;Offset 0004Eh-0006Dh - Title of Game - ;Offset 0006Eh-0007Dh - Name of Dumper - ;Offset 0007Eh-0009Dh - Comments - ;Offset 0009Eh-000A4h - Date of SPC Dumped in decimal (DD/MM/YYYY) - ;Offset 000A9h-000ABh - Time in seconds for the spc to play before fading - ;Offset 000ACh-000AFh - Fade out time in milliseconds - ;Offset 000B0h-000CFh - Author of Song - ;Offset 000D0h - Default Channel Disables (0 = enable, 1 = disable) - ;Offset 000D1h - Emulator used to dump .spc file - ; (0 = UNKNOWN, 1 = ZSNES, 2 = SNES9X) - ; (Note : Contact the authors if you're an snes emu - ; author with an .spc capture in order to assign - ; you a number) - - ;Offset 0002Eh-0004Dh - Name of SPC (32 bytes) - ;Offset 0004Eh-0005Dh - Name of Game (16 bytes) - ;Offset 0006Eh-0007Dh - Name of SPC dumper (16 bytes) - ;Offset 0007Eh-0009Dh - Comments (32 bytes) - ;Offset 0009Eh-000A8h - Date the SPC was Dumped (10 bytes) - ;Offset 000A9h-000ABh - Internal SPC timer (3 bytes) - - NEWSYM ssdatst - db 'SNES-SPC700 Sound File Data v0.30',26,26,26 ; offset 0 - db 10 ; Version #(/100), offset 36 - ; SPC Registers - dw 0 ; PC, offset 37 - db 0 ; A, offset 39 - db 0 ; X, offset 40 - db 0 ; Y, offset 41 - db 0 ; P, offset 42 - db 0 ; S, offset 43 - db 0,0 ; offset 44 (reserved) - - times 32 db 0 ; Title of game (Offset 46) - times 32 db 0 ; Song Name - times 16 db 0 ; Name of dumper - times 32 db 0 ; Comments - times 10 db 0 ; date of spc dumped - times 4 db 0 ; time in seconds before fading out - times 4 db 0 ; fade-out length in milliseconds - times 32 db 0 ; Author of Song - db 0 ; default channel enables - db 1 ; emulator used to dump .spc files - ; 32*5+20 = 180 - - times 48 db 0 ;(reserved), offset 224 - ; SPCRAM (offset 256), 64k - ; DSPRAM (offset 256+65536), 256 bytes - - SECTION .text - - NEWSYM dumpsound - mov cx,0 - mov edx,.filename - call Create_File - ; Process sound data - mov bx,ax - xor ecx,ecx - xor esi,esi - .loop - push eax - mov eax,[spcBuffera] - mov edx,dword[eax+ecx*4] - pop eax - cmp edx,0 - je .nowrite - mov [mode7tab+esi],edx - add esi,4 - cmp esi,65536 - je .savenow - .return - .nowrite - inc cx - jnz .loop - cmp esi,0 - je .nosave - mov ecx,esi - mov edx,mode7tab - call Write_File - .nosave - call Close_File - call Makemode7Table - ret - - .savenow - push ecx - mov ecx,65536 - mov edx,mode7tab - call Write_File - pop ecx - xor esi,esi - jmp .return - - SECTION .data - .filename db 'SOUNDDMP.RAW',0 - - NEWSYM pcxheader - db 10,5,1,8 - dw 0,0,255,223 - dw 256,224 - times 48 db 0 - db 0,1 - .bpline dw 256 - times 128-68 db 0 - - SECTION .bss - - NEWSYM picnum, resw 1 - - SECTION .data - - NEWSYM savepcx - %ifndef NO_PNG - cmp byte[ScreenShotFormat],1 - jne .notpng - ChangeDir SnapPath - pushad - call Grab_PNG_Data - popad - ChangeDirSRAM - ret - .notpng - %endif - - mov byte[pressed+1],0 - mov byte[pressed+59],0 - cmp byte[cbitmode],1 - je near .save16b - mov edi,pcxheader - mov ecx,128 - .clearhead - mov byte[edi],0 - inc edi - dec ecx - jnz .clearhead - mov byte[pcxheader+0],10 - mov byte[pcxheader+1],5 - mov byte[pcxheader+2],1 - mov byte[pcxheader+3],8 - mov word[pcxheader+8],255 - mov word[pcxheader+10],222 - mov byte[pcxheader.bpline-1],1 - mov word[pcxheader.bpline],256 - cmp byte[resolutn],224 - je .res224ph - mov word[pcxheader+10],237 - .res224ph - - ChangeDir SnapPath - - mov ecx,0 ;GetFreeFile use ecx==0 to tell if it's PCX - call GetFreeFile - - call Create_File - ; Save header - mov bx,ax - mov ecx,128 - mov edx,pcxheader - call Write_File - ; Save picture Data - mov byte[.rowsleft],223 - cmp byte[resolutn],224 - je .res224p - mov byte[.rowsleft],238 - .res224p - mov ecx,256 - mov edx,[vidbuffer] - add edx,16+288 - .a - xor ecx,ecx - mov esi,edx - mov edi,mode7tab - push ebx - mov ebx,256 - .loopp - mov al,[esi] - mov [edi],al - mov ah,al - and ah,0C0h - cmp ah,0C0h - jne .norep - mov byte[edi],0C1h - inc edi - inc ecx - mov byte[edi],al - .norep - inc ecx - inc esi - inc edi - dec ebx - jnz .loopp - pop ebx - xor al,al - push edx - mov edx,mode7tab - call Write_File - pop edx - add edx,288 - dec byte[.rowsleft] - jnz .a - ; Save Palette - mov ecx,769 - mov edx,[vidbuffer] - add edx,100000 - call Write_File - call Makemode7Table - call Close_File - ; mov dword[Msgptr],.pcxsaved - ; mov eax,[MsgCount] - ; mov [MessageOn],eax - ChangeDirSRAM - ret - - .save16b - test byte[pressed+14],1 - jnz near save16b2 - call prepare16b - mov edi,pcxheader - mov ecx,128 - .clearhead2 - mov byte[edi],0 - inc edi - dec ecx - jnz .clearhead2 - ; Initial header = 14 bytes - mov byte[pcxheader],'B' - mov byte[pcxheader+1],'M' - mov dword[pcxheader+2],02A01Ah-768 - mov dword[pcxheader+10],26 - - mov dword[pcxheader+14],12 - mov word[pcxheader+18],256 - mov word[pcxheader+20],223 - mov word[pcxheader+22],1 - mov word[pcxheader+24],24 - - cmp byte[resolutn],224 - je .res224b - add dword[pcxheader+2],768*15 - mov word[pcxheader+20],238 - .res224b - - ChangeDir SnapPath - - mov ecx,1 ;GetFreeFile use ecx==1 to tell if it's BMP - call GetFreeFile - - call Create_File - ; Save header - mov bx,ax - mov ecx,26 - mov edx,pcxheader - call Write_File - ; Save picture Data - mov byte[.rowsleft],223 - mov esi,[vidbuffer] - add esi,32+288*2*223 - cmp byte[resolutn],224 - je .res224b2 - mov byte[.rowsleft],238 - add esi,288*2*15 - .res224b2 - mov [.curdptr],esi - .a2 - mov ecx,256 - mov edi,mode7tab - mov esi,[.curdptr] - sub dword[.curdptr],288*2 - .b2 - push ecx - mov ax,[esi] - mov cl,[vesa2_bpos] - shr ax,cl - and ax,1Fh - shl al,3 - mov byte[edi],al - mov ax,[esi] - mov cl,[vesa2_gpos] - shr ax,cl - and ax,1Fh - shl al,3 - mov byte[edi+1],al - mov ax,[esi] - mov cl,[vesa2_rpos] - shr ax,cl - and ax,1Fh - shl al,3 - mov byte[edi+2],al - pop ecx - add edi,3 - add esi,2 - dec ecx - jnz .b2 - push edx - mov ecx,768 - mov edx,mode7tab - call Write_File - pop edx - add edx,288*2 - dec byte[.rowsleft] - jnz near .a2 - call Makemode7Table - call Close_File - ; mov dword[Msgptr],.rawsaved - ; mov eax,[MsgCount] - ; mov [MessageOn],eax - call restore16b - ChangeDirSRAM - ret - - - SECTION .bss - .rowsleft resb 1 - .curdptr resd 1 - - SECTION .text - - NEWSYM GetFreeFile - %ifdef __MSDOS__ - cmp ecx,0 - jne .isbmp - mov byte[.filename+9],'p' - mov byte[.filename+10],'c' - mov byte[.filename+11],'x' - jmp .doneextselect - .isbmp - mov byte[.filename+9],'b' - mov byte[.filename+10],'m' - mov byte[.filename+11],'p' - .doneextselect - mov byte[.filename+12],0 - mov word[picnum],0 - .findagain - mov edx,.filename - call Open_File - jc near .nofile - mov bx,ax - call Close_File - - inc word[picnum] - cmp word[picnum],1000 - je .nofile - - mov ax,[picnum] - xor edx,edx - mov bx,100 - div bx - mov cl,al - mov ax,dx - xor edx,edx - mov bx,10 - div bx - mov esi,.filename+5 - add cl,48 - add al,48 - add dl,48 - mov esi,.filename+5 - mov byte[esi],cl - mov byte[esi+1],al - mov byte[esi+2],dl - jmp .findagain - .nofile - mov edx,.filename - - %else - mov esi,fnames+1 - mov ebx,.imagefname - .end1 - mov al,[esi] - inc esi - cmp al,0 - jne .end1 - .end2 - dec esi - mov al,[esi] - cmp al,'.' - jne .end2 - mov edx,fnames+1 - .next - mov al,[edx] - mov [ebx],al - inc edx - inc ebx - cmp edx,esi - jne .next - mov esi,ebx - mov byte[esi],' ' - mov byte[esi+1],'0' - mov byte[esi+2],'0' - mov byte[esi+3],'0' - mov byte[esi+4],'0' - mov byte[esi+5],'.' - cmp ecx,0 - jne .isbmp - mov byte[esi+6],'p' - mov byte[esi+7],'c' - mov byte[esi+8],'x' - jmp .doneextselect - .isbmp - mov byte[esi+6],'b' - mov byte[esi+7],'m' - mov byte[esi+8],'p' - .doneextselect - mov byte[esi+9],0 - - mov word[picnum],0 - .findagain - mov edx,.imagefname - call Open_File - jc near .nofile - mov bx,ax - call Close_File - - inc word[picnum] - cmp word[picnum],10000 - je .nofile - mov ax,[picnum] - xor edx,edx - mov bx,1000 - div bx - add al,48 - mov byte[esi+1],al - mov ax,dx - xor edx,edx - mov bx,100 - div bx - add al,48 - mov byte[esi+2],al - mov ax,dx - xor edx,edx - mov bx,10 - div bx - add al,48 - add dl,48 - mov byte[esi+3],al - mov byte[esi+4],dl - jmp .findagain - .nofile - mov edx,.imagefname - %endif - ret - - SECTION .data - .filename db 'image000.pcx',0,0,0,0 - ;.pcxsaved db 'SNAPSHOT SAVED TO ' - ;.rawsaved db 'SNAPSHOT SAVED TO ' - SECTION .bss - .imagefname resb 128 - SECTION .text - - - NEWSYM save16b2 - call prepare16b - mov byte[pressed+14],2 - push es - mov edi,pcxheader - mov ecx,128 - .clearhead2 - mov byte[edi],0 - inc edi - dec ecx - jnz .clearhead2 - ; Initial header = 14 bytes - mov byte[pcxheader],'B' - mov byte[pcxheader+1],'M' - mov dword[pcxheader+2],02A01Ah-256*224*3+512*448*3 - mov dword[pcxheader+10],26 - mov dword[pcxheader+14],12 - mov word[pcxheader+18],512 - mov word[pcxheader+20],448 - mov word[pcxheader+22],1 - mov word[pcxheader+24],24 - - ChangeDir SnapPath - - mov ecx,1 ;GetFreeFile use ecx==1 to tell if it's BMP - call GetFreeFile - - mov cx,0 - call Create_File - ; Save header - mov bx,ax - mov ecx,26 - mov edx,pcxheader - call Write_File - ; Save picture Data - mov dword[.rowsleft],448 - mov ax,[vesa2selec] - mov es,ax - mov esi,32*2+640*2*223*2+640*2 - mov [.curdptr],esi - .a2 - mov ecx,512 - mov edi,mode7tab - mov esi,[.curdptr] - sub dword[.curdptr],640*2 - .b2 - push ecx - mov ax,[es:esi] - mov cl,[vesa2_bpos] - shr ax,cl - and ax,1Fh - shl al,3 - mov byte[edi],al - mov ax,[es:esi] - mov cl,[vesa2_gpos] - shr ax,cl - and ax,1Fh - shl al,3 - mov byte[edi+1],al - mov ax,[es:esi] - mov cl,[vesa2_rpos] - shr ax,cl - and ax,1Fh - shl al,3 - mov byte[edi+2],al - pop ecx - add edi,3 - add esi,2 - dec ecx - jnz .b2 - push edx - mov ecx,768*2 - mov edx,mode7tab - call Write_File - pop edx - add edx,288*2 - dec dword[.rowsleft] - jnz near .a2 - call Makemode7Table - call Close_File - ; mov dword[Msgptr],.rawsaved - ; mov eax,[MsgCount] - ; mov [MessageOn],eax - pop es - call restore16b - ChangeDirSRAM - ret - - SECTION .data - ;.rawsaved db 'SNAPSHOT SAVED TO ' - SECTION .bss - .rowsleft resd 1 - .curdptr resd 1 - SECTION .text - - prepare16b: - cmp byte[vesa2red10],1 - jne .nored - cmp byte[cvidmode],5 - jne .nored - cmp byte[scanlines],1 - je .nored - cmp byte[smallscreenon],1 - je .nored - mov byte[vesa2_rpos],10 - mov byte[vesa2_gpos],5 - .nored - ret - restore16b: - cmp byte[vesa2red10],1 - jne .nored - mov byte[vesa2_rpos],11 - mov byte[vesa2_gpos],6 - .nored - ret - -NEWSYM MenuAsmEnd - diff --git a/zsnes/src/linux/protect.c b/zsnes/src/linux/protect.c index d73c88a0..28ca317f 100644 --- a/zsnes/src/linux/protect.c +++ b/zsnes/src/linux/protect.c @@ -17,8 +17,6 @@ #include "gblhdr.h" -extern void GuiAsmStart(); -extern void GuiAsmEnd(); extern void SfxProcAsmStart(); extern void SfxProcAsmEnd(); extern void FxEmu2AsmStart(); @@ -59,8 +57,6 @@ extern void GPProAsmStart(); extern void GPProAsmEnd(); extern void Vesa12AsmStart(); extern void Vesa12AsmEnd(); -extern void MenuAsmStart(); -extern void MenuAsmEnd(); extern void MakeV16TAsmStart(); extern void MakeV16TAsmEnd(); extern void Mode716BAsmStart(); @@ -106,7 +102,6 @@ void UnProtectMemory(void) MakeCodeWriteable((long) SfxProcAsmStart, (long) SfxProcAsmEnd - (long) SfxProcAsmStart); MakeCodeWriteable((long) FxEmu2CAsmStart, (long) FxEmu2CAsmEnd - (long) FxEmu2CAsmStart); MakeCodeWriteable((long) WinIntRFAsmStart, (long) WinIntRFAsmEnd - (long) WinIntRFAsmStart); - MakeCodeWriteable((long) GuiAsmStart, (long) GuiAsmEnd - (long) GuiAsmStart); MakeCodeWriteable((long) CfgLoadAsmStart, (long) CfgLoadAsmEnd - (long) CfgLoadAsmStart); MakeCodeWriteable((long) IrqAsmStart, (long) IrqAsmEnd - (long) IrqAsmStart); MakeCodeWriteable((long) TableAsmStart, (long) TableAsmEnd - (long) TableAsmStart); @@ -123,7 +118,6 @@ void UnProtectMemory(void) MakeCodeWriteable((long) SWAsmStart, (long) SWAsmEnd - (long) SWAsmStart); MakeCodeWriteable((long) GPProAsmStart, (long) GPProAsmEnd - (long) GPProAsmStart); MakeCodeWriteable((long) Vesa12AsmStart, (long) Vesa12AsmEnd - (long) Vesa12AsmStart); - MakeCodeWriteable((long) MenuAsmStart, (long) MenuAsmEnd - (long) MenuAsmStart); MakeCodeWriteable((long) MakeV16TAsmStart, (long) MakeV16TAsmEnd - (long) MakeV16TAsmStart); MakeCodeWriteable((long) Mode716BAsmStart, (long) Mode716BAsmEnd - (long) Mode716BAsmStart); MakeCodeWriteable((long) Mode716DAsmStart, (long) Mode716DAsmEnd - (long) Mode716DAsmStart);