From e41b33c87c6a70c89745774c43b9eec092b3595a Mon Sep 17 00:00:00 2001 From: pagefault <> Date: Fri, 26 Apr 2002 20:25:47 +0000 Subject: [PATCH] Super System support --- zsnes/src/cpu/regs.inc | 36 ++++++++++++++++++++++++ zsnes/src/gui/gui.asm | 3 +- zsnes/src/gui/guimouse.inc | 6 ++++ zsnes/src/gui/guiwindp.inc | 57 ++++++++++++++++++++++++++++++++++++++ zsnes/src/init.asm | 33 ++++++++++++++++++++++ 5 files changed, 134 insertions(+), 1 deletion(-) diff --git a/zsnes/src/cpu/regs.inc b/zsnes/src/cpu/regs.inc index c5ba90cb..30ed9b28 100644 --- a/zsnes/src/cpu/regs.inc +++ b/zsnes/src/cpu/regs.inc @@ -327,6 +327,8 @@ NEWSYM initregr setreg 4016h*4,reg4016r setreg 4017h*4,reg4017r + setreg 4100h*4,reg4100r + setreg 420Ah*4,reg420Ar setreg 420Bh*4,reg420Br setreg 420Ch*4,reg420Cr @@ -703,6 +705,13 @@ NEWSYM SPC700write, dd 0 NEWSYM JoyCRead, db 0 +NEWSYM nssdip1, db 0 +NEWSYM nssdip2, db 0 +NEWSYM nssdip3, db 0 +NEWSYM nssdip4, db 0 +NEWSYM nssdip5, db 0 +NEWSYM nssdip6, db 0 + NEWSYM ClearRegs mov word[VIRQLoc],0 mov word[bg1ptr],0 @@ -1170,6 +1179,33 @@ reg4017r: rol dword[JoyENow],1 ret +reg4100r: + cmp byte[nssdip1],1 + je .nodip1 + mov al,1 +.nodip1 + cmp byte[nssdip1],1 + je .nodip2 + or al,02h +.nodip2 + cmp byte[nssdip3],1 + je .nodip3 + or al,04h +.nodip3 + cmp byte[nssdip4],1 + je .nodip4 + or al,08h +.nodip4 + cmp byte[nssdip5],1 + je .nodip5 + or al,10h +.nodip5 + cmp byte[nssdip6],1 + je .nodip6 + or al,20h +.nodip6 + ret + reg420Ar: reg420Br: reg420Cr: diff --git a/zsnes/src/gui/gui.asm b/zsnes/src/gui/gui.asm index d4653ee0..febf7c72 100644 --- a/zsnes/src/gui/gui.asm +++ b/zsnes/src/gui/gui.asm @@ -171,6 +171,7 @@ EXTSYM ipxgetchar,ipxsendchar,TCPIPStoreByte EXTSYM TCPIPGetByte,GUIBIFIL EXTSYM ModemSendChar EXTSYM firstsaveinc +EXTSYM nssdip1,nssdip2,nssdip3,nssdip4,nssdip5,nssdip6 %ifdef __LINUX__ EXTSYM numlockptr %endif @@ -620,7 +621,7 @@ ModemOKStat db 0 ; OK is detected on modem status GUIwinposxo dd 0,5 ,60 ,30 ,55 ,50 ,35 ,5 ,30 ,10 ,10 ,50 ,65 ,20 ,70 ,50 ,3 ,50 GUIwinposyo dd 0,20 ,70 ,30 ,20 ,20 ,20 ,20 ,30 ,20 ,20 ,20 ,60 ,30 ,65 ,50 ,22 ,60 GUIwinsizex dd 0,244 ,126 ,189 ,167 ,170 ,188 ,244 ,8*16,235 ,240 ,190 ,9*16,8*16,9*16,140 ,250 ,160 -GUIwinsizey dd 0,190 ,3*16,166 ,190 ,192 ,188 ,191 ,40 ,189 ,150 ,190 ,42 ,40 ,42 ,70 ,190 ,60 +GUIwinsizey dd 0,190 ,3*16,166 ,190 ,192 ,188 ,191 ,40 ,189 ,150 ,190 ,42 ,40 ,42 ,70 ,190 ,100 GUIwinptr db 0 GUItextcolor db 0,0,0,0,0 diff --git a/zsnes/src/gui/guimouse.inc b/zsnes/src/gui/guimouse.inc index 17060a79..ce7f94b5 100644 --- a/zsnes/src/gui/guimouse.inc +++ b/zsnes/src/gui/guimouse.inc @@ -3113,6 +3113,12 @@ DisplayGUIAddOnClick: GUIPButtonHole 9,35,byte[snesmouse],2 GUIPButtonHole 9,45,byte[snesmouse],3 GUIPButtonHole 9,55,byte[snesmouse],4 + GUIClickCButton 9,83,byte[nssdip1] + GUIClickCButton 59,83,byte[nssdip2] + GUIClickCButton 109,83,byte[nssdip3] + GUIClickCButton 9,93,byte[nssdip4] + GUIClickCButton 59,93,byte[nssdip5] + GUIClickCButton 109,93,byte[nssdip6] ret DrawMouse: diff --git a/zsnes/src/gui/guiwindp.inc b/zsnes/src/gui/guiwindp.inc index ac187fb3..4e982f7a 100644 --- a/zsnes/src/gui/guiwindp.inc +++ b/zsnes/src/gui/guiwindp.inc @@ -6023,17 +6023,67 @@ DisplayGUIAddOns: GUIOuttextwin2 17,21,38,GUIAddOnText3 GUIOuttextwin2 17,21,48,GUIAddOnText4 GUIOuttextwin2 17,21,58,GUIAddOnText5 + GUIOuttextwin2 17,10,78,GUIAddOnText6 + GUIOuttextwin2 17,21,88,GUIAddOnText7 + GUIOuttextwin2 17,71,88,GUIAddOnText8 + GUIOuttextwin2 17,121,88,GUIAddOnText9 + GUIOuttextwin2 17,21,98,GUIAddOnTextA + GUIOuttextwin2 17,71,98,GUIAddOnTextB + GUIOuttextwin2 17,121,98,GUIAddOnTextC add byte[GUItextcolor],15 GUIOuttextwin2 17,20,17,GUIAddOnText1 GUIOuttextwin2 17,20,27,GUIAddOnText2 GUIOuttextwin2 17,20,37,GUIAddOnText3 GUIOuttextwin2 17,20,47,GUIAddOnText4 GUIOuttextwin2 17,20,57,GUIAddOnText5 + GUIOuttextwin2 17,9,77,GUIAddOnText6 + GUIOuttextwin2 17,20,87,GUIAddOnText7 + GUIOuttextwin2 17,70,87,GUIAddOnText8 + GUIOuttextwin2 17,120,87,GUIAddOnText9 + GUIOuttextwin2 17,20,97,GUIAddOnTextA + GUIOuttextwin2 17,70,97,GUIAddOnTextB + GUIOuttextwin2 17,120,97,GUIAddOnTextC GUIDisplayButtonHole 17,9,15,byte[snesmouse],0 GUIDisplayButtonHole 17,9,25,byte[snesmouse],1 GUIDisplayButtonHole 17,9,35,byte[snesmouse],2 GUIDisplayButtonHole 17,9,45,byte[snesmouse],3 GUIDisplayButtonHole 17,9,55,byte[snesmouse],4 + mov dword[GUITemp],GUIIconDataCheckBoxUC + cmp byte[nssdip1],0 + je .nodip1 + mov dword[GUITemp],GUIIconDataCheckBoxC +.nodip1 + GUIDisplayIconWin 17,9,83,[GUITemp] + mov dword[GUITemp],GUIIconDataCheckBoxUC + cmp byte[nssdip2],0 + je .nodip2 + mov dword[GUITemp],GUIIconDataCheckBoxC +.nodip2 + GUIDisplayIconWin 17,59,83,[GUITemp] + mov dword[GUITemp],GUIIconDataCheckBoxUC + cmp byte[nssdip3],0 + je .nodip3 + mov dword[GUITemp],GUIIconDataCheckBoxC +.nodip3 + GUIDisplayIconWin 17,109,83,[GUITemp] + mov dword[GUITemp],GUIIconDataCheckBoxUC + cmp byte[nssdip4],0 + je .nodip4 + mov dword[GUITemp],GUIIconDataCheckBoxC +.nodip4 + GUIDisplayIconWin 17,9,93,[GUITemp] + mov dword[GUITemp],GUIIconDataCheckBoxUC + cmp byte[nssdip5],0 + je .nodip5 + mov dword[GUITemp],GUIIconDataCheckBoxC +.nodip5 + GUIDisplayIconWin 17,59,93,[GUITemp] + mov dword[GUITemp],GUIIconDataCheckBoxUC + cmp byte[nssdip6],0 + je .nodip6 + mov dword[GUITemp],GUIIconDataCheckBoxC +.nodip6 + GUIDisplayIconWin 17,109,93,[GUITemp] ret GUIAddOnText1 db 'NONE',0 @@ -6041,6 +6091,13 @@ GUIAddOnText2 db 'SNES MOUSE AT PORT #1',0 GUIAddOnText3 db 'SNES MOUSE AT PORT #2',0 GUIAddOnText4 db 'SUPER SCOPE',0 GUIAddOnText5 db 'LETHAL ENFORCER GUN',0 +GUIAddOnText6 db 'SUPER SYSTEM',0 +GUIAddOnText7 db 'DIP 1',0 +GUIAddOnText8 db 'DIP 2',0 +GUIAddOnText9 db 'DIP 3',0 +GUIAddOnTextA db 'DIP 4',0 +GUIAddOnTextB db 'DIP 5',0 +GUIAddOnTextC db 'DIP 6',0 GUILoadDisp db 'LOAD GAME',0 GUIResetDisp db 'RESET GAME',0 diff --git a/zsnes/src/init.asm b/zsnes/src/init.asm index 873e9d28..0e5cf9e8 100644 --- a/zsnes/src/init.asm +++ b/zsnes/src/init.asm @@ -3981,6 +3981,13 @@ UnZipFile: UnZipSearch GUIfindBIN UnZipSearch GUIfindZIP UnZipSearch GUIfind1 + UnZipSearch GUIfindIC7 + UnZipSearch GUIfindIC6 + UnZipSearch GUIfindIC5 + UnZipSearch GUIfindIC4 + UnZipSearch GUIfindIC3 + UnZipSearch GUIfindIC2 + UnZipSearch GUIfindIC1 UnZipSearch GUIfindBlank .failed call ZipDelete @@ -4007,6 +4014,14 @@ UnZipFile: mov byte[ZipSupport],2 ret +GUIfindIC7 db '*.IC7',0 +GUIfindIC6 db '*.IC6',0 +GUIfindIC5 db '*.IC5',0 +GUIfindIC4 db '*.IC4',0 +GUIfindIC3 db '*.IC3',0 +GUIfindIC2 db '*.IC2',0 +GUIfindIC1 db '*.IC1',0 + ZipDelete: mov esi,mode7tab call ZipDeleteRecurse @@ -4625,6 +4640,24 @@ NEWSYM loadfileGUI jnc near .nextfile dec byte[edi+1] .nonumer + mov edi,[.dotpos] + ; search for ICx files + cmp byte[edi],'.' + jne .noicfile + cmp byte[edi+3],'1' + jb .noicfile + cmp byte[edi+3],'7' + ja .noicfile + cmp byte[edi+4],0 + jne .noicfile + dec byte[edi+3] + xor ecx,ecx + mov byte[.first],2 + mov edx,fname+1 + call Open_File + jnc near .nextfile + inc byte[edi+3] +.noicfile ; search for A,B,C, etc. cmp byte[.first],0 je .yesgd