Trashed snesmouse, now using devices. pagefault: please look over.

This commit is contained in:
n-a-c-h
2006-03-24 00:47:31 +00:00
parent f001226b7e
commit e59917412c
13 changed files with 217 additions and 139 deletions

View File

@@ -33,7 +33,8 @@ NEWSYM KeyBGDisble2, dd 4
NEWSYM KeyBGDisble3, dd 5 NEWSYM KeyBGDisble3, dd 5
NEWSYM KeySprDisble, dd 6 NEWSYM KeySprDisble, dd 6
NEWSYM KeyResetAll, dd 7 NEWSYM KeyResetAll, dd 7
NEWSYM KeyExtraEnab, dd 8 NEWSYM KeyExtraEnab1, dd 0
NEWSYM KeyExtraEnab2, dd 0
NEWSYM KeyNewGfxSwt, dd 9 NEWSYM KeyNewGfxSwt, dd 9
NEWSYM KeyWinDisble, dd 10 NEWSYM KeyWinDisble, dd 10
NEWSYM KeyOffsetMSw, dd 11 NEWSYM KeyOffsetMSw, dd 11

View File

@@ -37,7 +37,7 @@ EXTSYM cachesprites,opcjmptab,CheatOn
EXTSYM INTEnab,JoyCRead,NMIEnab,NumCheats,CurrentExecSA1,ReadInputDevice EXTSYM INTEnab,JoyCRead,NMIEnab,NumCheats,CurrentExecSA1,ReadInputDevice
EXTSYM StartDrawNewGfx,VIRQLoc,cachevideo,cfield,cheatdata,curblank,curnmi EXTSYM StartDrawNewGfx,VIRQLoc,cachevideo,cfield,cheatdata,curblank,curnmi
EXTSYM curypos,cycpl,doirqnext,drawline,exechdma,hdmadelay,intrset,newengen EXTSYM curypos,cycpl,doirqnext,drawline,exechdma,hdmadelay,intrset,newengen
EXTSYM oamaddr,oamaddrs,resolutn,showvideo,snesmouse,starthdma,switchtonmi EXTSYM oamaddr,oamaddrs,resolutn,showvideo,starthdma,switchtonmi
EXTSYM switchtovirq,totlines,updatetimer,SA1Swap,SA1DoIRQ,JoyAOrig,JoyANow EXTSYM switchtovirq,totlines,updatetimer,SA1Swap,SA1DoIRQ,JoyAOrig,JoyANow
EXTSYM JoyBOrig,JoyBNow,JoyCOrig,JoyCNow,JoyDOrig,JoyDNow,JoyEOrig,JoyENow EXTSYM JoyBOrig,JoyBNow,JoyCOrig,JoyCNow,JoyDOrig,JoyDNow,JoyEOrig,JoyENow
EXTSYM SA1Message,MultiTapStat,idledetectspc,SA1Control,SA1Enable,SA1IRQEnable EXTSYM SA1Message,MultiTapStat,idledetectspc,SA1Control,SA1Enable,SA1IRQEnable
@@ -54,6 +54,7 @@ EXTSYM MovieSeekBehind,SaveSramData,BackupCVFrame,RestoreCVFrame,loadstate
EXTSYM KeyInsrtChap,KeyNextChap,KeyPrevChap,MovieInsertChapter,MovieSeekAhead EXTSYM KeyInsrtChap,KeyNextChap,KeyPrevChap,MovieInsertChapter,MovieSeekAhead
EXTSYM ResetDuringMovie,EMUPauseKey,INCRFrameKey,MovieWaiting,NoInputRead EXTSYM ResetDuringMovie,EMUPauseKey,INCRFrameKey,MovieWaiting,NoInputRead
EXTSYM AllocatedRewindStates,PauseFrameMode,RestorePauseFrame,BackupPauseFrame EXTSYM AllocatedRewindStates,PauseFrameMode,RestorePauseFrame,BackupPauseFrame
EXTSYM device2
%ifdef __MSDOS__ %ifdef __MSDOS__
EXTSYM dssel,Game60hzcall,NextLineStart,FlipWait,LastLineStart EXTSYM dssel,Game60hzcall,NextLineStart,FlipWait,LastLineStart
@@ -1365,11 +1366,18 @@ NEWSYM cpuover
jmp DosExit jmp DosExit
.noprocmovie .noprocmovie
cmp byte[snesmouse],5 cmp byte[device2],3
jne .nolethalen jne .nolethalen1
mov eax,[LethEnData] mov eax,[LethEnData]
mov [JoyBNow],eax mov [JoyBNow],eax
.nolethalen .nolethalen1
;Todo, add second gun...
cmp byte[device2],4
jne .nolethalen2
mov eax,[LethEnData]
mov [JoyBNow],eax
.nolethalen2
test byte[INTEnab],1 test byte[INTEnab],1
jz .noresetjoy jz .noresetjoy
@@ -2130,11 +2138,16 @@ NEWSYM execsingle
mov byte[JoyCRead],0 mov byte[JoyCRead],0
.noresetjoy .noresetjoy
cmp byte[snesmouse],4 cmp byte[device2],3
jne .nolethalen jne .nolethalen1
mov eax,[LethEnData] mov eax,[LethEnData]
mov [JoyBNow],eax mov [JoyBNow],eax
.nolethalen .nolethalen1
cmp byte[device2],4
jne .nolethalen2
mov eax,[LethEnData]
mov [JoyBNow],eax
.nolethalen2
mov byte[MultiTapStat],80h mov byte[MultiTapStat],80h
mov byte[NMIEnab],81h mov byte[NMIEnab],81h

View File

@@ -21,7 +21,7 @@
EXTSYM SFXEnable,regptr,initsfxregsr,initSA1regs,SA1Enable,initSDD1regs EXTSYM SFXEnable,regptr,initsfxregsr,initSA1regs,SA1Enable,initSDD1regs
EXTSYM SPC7110Enable,initSPC7110regs,RTCEnable,RTCReset,curypos,cycpl EXTSYM SPC7110Enable,initSPC7110regs,RTCEnable,RTCReset,curypos,cycpl
EXTSYM debuggeron,pdh,vram,romispal,reg1read,spcnumread,spcon,reg2read,reg3read EXTSYM debuggeron,pdh,vram,romispal,reg1read,spcnumread,spcon,reg2read,reg3read
EXTSYM reg4read,JoyEOrig,JoyENow,snesmouse,cycphb,joycontren,totlines,DosExit EXTSYM reg4read,JoyEOrig,JoyENow,device2,cycphb,joycontren,totlines,DosExit
EXTSYM invalid,numinst,previdmode,printhex,printnum EXTSYM invalid,numinst,previdmode,printhex,printnum
SECTION .text SECTION .text
@@ -908,7 +908,7 @@ SECTION .text
; Joystick Data for controller 2 and 4 ; Joystick Data for controller 2 and 4
reg4017r: reg4017r:
cmp byte[snesmouse],0 cmp byte[device2],0
jne .nomultitap jne .nomultitap
cmp byte[MultiTap],1 cmp byte[MultiTap],1
je .multitap je .multitap

View File

@@ -118,7 +118,7 @@ EXTSYM RewindStates,RewindFrames,PauseRewind,PauseLoad,SRAMState,AutoState
EXTSYM LatestSave,SRAMSave5Sec,AutoIncSaveSlot,pl3selk,pl4selk,pl5selk EXTSYM LatestSave,SRAMSave5Sec,AutoIncSaveSlot,pl3selk,pl4selk,pl5selk
EXTSYM pl1Atk,pl2Atk,pl3Atk,pl4Atk,pl5Atk,pl3contrl,KeyUsePlayer1234 EXTSYM pl1Atk,pl2Atk,pl3Atk,pl4Atk,pl5Atk,pl3contrl,KeyUsePlayer1234
EXTSYM pl1Ltk,pl2Ltk,pl3Ltk,pl4Ltk,pl5Ltk,pl4contrl,KeyResetAll,CalibXmin EXTSYM pl1Ltk,pl2Ltk,pl3Ltk,pl4Ltk,pl5Ltk,pl4contrl,KeyResetAll,CalibXmin
EXTSYM pl5contrl,KeyExtraEnab,CalibYmin EXTSYM pl5contrl,KeyExtraEnab1,KeyExtraEnab2,CalibYmin
EXTSYM pl1ULk,pl2ULk,pl3ULk,pl4ULk,pl5ULk,KeyVolDown,KeyVolUp,CalibXmax EXTSYM pl1ULk,pl2ULk,pl3ULk,pl4ULk,pl5ULk,KeyVolDown,KeyVolUp,CalibXmax
EXTSYM CalibYmax,CalibXmin209,CalibXmax209,CalibYmin209,CalibYmax209 EXTSYM CalibYmax,CalibXmin209,CalibXmax209,CalibYmin209,CalibYmax209
EXTSYM KeyBGDisble0,KeyBGDisble1,KeyBGDisble2,KeyBGDisble3,KeySprDisble EXTSYM KeyBGDisble0,KeyBGDisble1,KeyBGDisble2,KeyBGDisble3,KeySprDisble

View File

@@ -2869,7 +2869,7 @@ DisplayGameOptnsClick:
DGOptnsProcBox 78,100,[KeyUsePlayer1234] DGOptnsProcBox 78,100,[KeyUsePlayer1234]
DGOptnsProcBox 78,110,[KeyResetAll] DGOptnsProcBox 78,110,[KeyResetAll]
DGOptnsProcBox 78,120,[KeyExtraEnab] ;DGOptnsProcBox 78,120,[KeyExtraEnab]
DGOptnsProcBox 78,130,[KeyDisplayFPS] DGOptnsProcBox 78,130,[KeyDisplayFPS]
DGOptnsProcBox 78,140,[KeyIncreaseGamma] DGOptnsProcBox 78,140,[KeyIncreaseGamma]
DGOptnsProcBox 78,150,[KeyDecreaseGamma] DGOptnsProcBox 78,150,[KeyDecreaseGamma]

View File

@@ -2989,7 +2989,7 @@ DisplayGameOptns: ; Misc Key Window
DDrawBox 9,77,99,[KeyUsePlayer1234] DDrawBox 9,77,99,[KeyUsePlayer1234]
DDrawBox 9,77,109,[KeyResetAll] DDrawBox 9,77,109,[KeyResetAll]
DDrawBox 9,77,119,[KeyExtraEnab] ;DDrawBox 9,77,119,[KeyExtraEnab]
DDrawBox 9,77,129,[KeyDisplayFPS] DDrawBox 9,77,129,[KeyDisplayFPS]
DDrawBox 9,77,139,[KeyIncreaseGamma] DDrawBox 9,77,139,[KeyIncreaseGamma]
DDrawBox 9,77,149,[KeyDecreaseGamma] DDrawBox 9,77,149,[KeyDecreaseGamma]

View File

@@ -31,8 +31,8 @@ EXTSYM pl3Lk,pl3Rk,pl3Xk,pl3Yk,pl3contrl,pl3downk,pl3leftk,pl3rightk,pl3selk
EXTSYM pl3startk,pl3upk,pl4Ak,pl4Bk,pl4Lk,pl4Rk,pl4Xk,pl4Yk,pl4contrl,pl4downk EXTSYM pl3startk,pl3upk,pl4Ak,pl4Bk,pl4Lk,pl4Rk,pl4Xk,pl4Yk,pl4contrl,pl4downk
EXTSYM pl4leftk,pl4rightk,pl4selk,pl4startk,pl4upk,mousebuttons,mousexdir,pl5Ak EXTSYM pl4leftk,pl4rightk,pl4selk,pl4startk,pl4upk,mousebuttons,mousexdir,pl5Ak
EXTSYM pl5Bk,pl5Lk,pl5Rk,pl5Xk,pl5Yk,pl5contrl,pl5downk,pl5leftk,pl5rightk EXTSYM pl5Bk,pl5Lk,pl5Rk,pl5Xk,pl5Yk,pl5contrl,pl5downk,pl5leftk,pl5rightk
EXTSYM pl5selk,pl5startk,pl5upk,mouseydir,mousexpos,mouseypos,snesmouse,sram EXTSYM pl5selk,pl5startk,pl5upk,mouseydir,mousexpos,mouseypos,sram
EXTSYM processmouse,ssautosw,GUIDelayB,pl12s34,pl1Xtk,pl1Ytk,pl1Atk,pl1Btk EXTSYM ssautosw,GUIDelayB,pl12s34,pl1Xtk,pl1Ytk,pl1Atk,pl1Btk
EXTSYM pl2Xtk,pl2Ytk,pl2Atk,pl2Btk,pl3Xtk,pl3Ytk,pl3Atk,pl3Btk,pl4Xtk,pl4Ytk EXTSYM pl2Xtk,pl2Ytk,pl2Atk,pl2Btk,pl3Xtk,pl3Ytk,pl3Atk,pl3Btk,pl4Xtk,pl4Ytk
EXTSYM pl4Atk,pl4Btk,pl1ULk,pl1URk,pl1DLk,pl1DRk,pl2ULk,pl2URk,pl2DLk,pl2DRk EXTSYM pl4Atk,pl4Btk,pl1ULk,pl1URk,pl1DLk,pl1DRk,pl2ULk,pl2URk,pl2DLk,pl2DRk
EXTSYM pl3ULk,pl3URk,pl3DLk,pl3DRk,pl4ULk,pl4URk,pl4DLk,pl4DRk,pl5ULk,pl5URk EXTSYM pl3ULk,pl3URk,pl3DLk,pl3DRk,pl4ULk,pl4URk,pl4DLk,pl4DRk,pl5ULk,pl5URk
@@ -55,6 +55,7 @@ EXTSYM GetCurDir,SRAMChdir,cfgloadsdir,fnamest,statefileloc,InitDir,InitDrive
EXTSYM curromspace,infoloc,patchfile,romispal,initregr,initregw,memtabler16 EXTSYM curromspace,infoloc,patchfile,romispal,initregr,initregw,memtabler16
EXTSYM memtabler8,memtablew16,memtablew8,sfxramdata,wramreadptr EXTSYM memtabler8,memtablew16,memtablew8,sfxramdata,wramreadptr
EXTSYM wramwriteptr,loadstate2,CMovieExt,MoviePlay,MovieDumpRaw,AllowUDLR EXTSYM wramwriteptr,loadstate2,CMovieExt,MoviePlay,MovieDumpRaw,AllowUDLR
EXTSYM device1,device2,processmouse1,processmouse2
;initc.c ;initc.c
EXTSYM clearmem,clearSPCRAM,PatchUsingIPS,ZOpenFileName,loadROM,SPC7110IndexSize EXTSYM clearmem,clearSPCRAM,PatchUsingIPS,ZOpenFileName,loadROM,SPC7110IndexSize
@@ -719,21 +720,10 @@ NEWSYM ReadInputDevice
mov dword[JoyAOrig],0 mov dword[JoyAOrig],0
mov dword[JoyBOrig],0 mov dword[JoyBOrig],0
cmp byte[snesmouse],3
jne .nomultimouse
mov byte[MouseToRead],1
call processmouse
ProcSNESMouse JoyAOrig
mov byte[MouseToRead],2
call processmouse
ProcSNESMouse JoyBOrig
jmp .noinput2
.nomultimouse
; Get Player1 input device ; Get Player1 input device
cmp byte[snesmouse],1 cmp byte[device1],1
jne .nomouse1 jne .nomouse1
call processmouse call processmouse1
ProcSNESMouse JoyAOrig ProcSNESMouse JoyAOrig
jmp .noinput1 jmp .noinput1
.nomouse1 .nomouse1
@@ -781,15 +771,16 @@ NEWSYM ReadInputDevice
and dword[JoyAOrig],7FFFFFFFh and dword[JoyAOrig],7FFFFFFFh
.noinput1 .noinput1
mov dword[JoyBOrig],0 mov dword[JoyBOrig],0
cmp byte[snesmouse],2 cmp byte[device2],1
jne .nomouse2 jne .nomouse2
call processmouse mov byte[MouseToRead],1
call processmouse2
ProcSNESMouse JoyBOrig ProcSNESMouse JoyBOrig
jmp .noinput2 jmp .noinput2
.nomouse2 .nomouse2
cmp byte[snesmouse],4 cmp byte[device2],2
jne .nosuperscope jne .nosuperscope
call processmouse call processmouse2
mov byte[JoyBOrig+2],0FFh mov byte[JoyBOrig+2],0FFh
mov al,[ssautosw] mov al,[ssautosw]
test byte[mousebuttons],01h test byte[mousebuttons],01h
@@ -807,9 +798,9 @@ NEWSYM ReadInputDevice
mov [JoyBOrig+3],al mov [JoyBOrig+3],al
jmp .noinput2 jmp .noinput2
.nosuperscope .nosuperscope
cmp byte[snesmouse],5 cmp byte[device2],3
jne .nolethalen jne .nolethalen
call processmouse call processmouse2
mov eax,[romdata] mov eax,[romdata]
cmp dword[eax+1000h],0AD20C203h cmp dword[eax+1000h],0AD20C203h
jne .not jne .not
@@ -982,24 +973,17 @@ NEWSYM ReadInputDevice
or dword[JoyEOrig],00008000h ; Joystick Enable or dword[JoyEOrig],00008000h ; Joystick Enable
.noinput5 .noinput5
cmp byte[pl12s34],1 cmp byte[pl12s34],1
je .pl1234 jne .nop24
.nopl1234 cmp byte[device1],0
ret jne .nop13
.pl1234
cmp byte[snesmouse],5
je .nopl1234
cmp byte[snesmouse],1
je .nopl13
mov eax,[JoyCOrig] mov eax,[JoyCOrig]
or [JoyAOrig],eax or [JoyAOrig],eax
.nopl13 .nop13
cmp byte[snesmouse],2 cmp byte[device2],0
je .nopl24 jne .nop24
cmp byte[snesmouse],4
je .nopl24
mov eax,[JoyDOrig] mov eax,[JoyDOrig]
or [JoyBOrig],eax or [JoyBOrig],eax
.nopl24 .nop24
ret ret
;******************************************************* ;*******************************************************

View File

@@ -1099,8 +1099,8 @@ bool NSRTHead(unsigned char *ROM)
extern bool EMUPause; extern bool EMUPause;
extern bool Sup48mbit; extern bool Sup48mbit;
extern bool Sup16mbit; extern bool Sup16mbit;
extern unsigned char snesmouse; extern unsigned char device1, device2;
unsigned char snesinputdefault; unsigned char snesinputdefault1, snesinputdefault2;
bool input1gp; bool input1gp;
bool input1mouse; bool input1mouse;
bool input2gp; bool input2gp;
@@ -1201,7 +1201,8 @@ void loadROM()
} }
} }
snesmouse = 0; device1 = 0;
device2 = 0;
input1gp = true; input1gp = true;
input1mouse = true; input1mouse = true;
input2gp = true; input2gp = true;
@@ -1226,7 +1227,7 @@ void loadROM()
break; break;
case 0x01: //Mouse port 2 case 0x01: //Mouse port 2
snesmouse = 2; device2 = 1;
input2gp = false; input2gp = false;
input2scope = false; input2scope = false;
input2just = false; input2just = false;
@@ -1234,7 +1235,7 @@ void loadROM()
break; break;
case 0x03: //Super Scope port 2 case 0x03: //Super Scope port 2
snesmouse = 3; device2 = 2;
input2gp = false; input2gp = false;
input2mouse = false; input2mouse = false;
input2just = false; input2just = false;
@@ -1242,14 +1243,14 @@ void loadROM()
break; break;
case 0x04: //Super Scope or Gamepad port 2 case 0x04: //Super Scope or Gamepad port 2
snesmouse = 3; device2 = 2;
input2mouse = false; input2mouse = false;
input2just = false; input2just = false;
input1mouse = false; input1mouse = false;
break; break;
case 0x05: //Justifier (Lethal Enforcer gun) port 2 case 0x05: //Justifier (Lethal Enforcer gun) port 2
snesmouse = 4; device2 = 3;
input2mouse = false; input2mouse = false;
input2scope = false; input2scope = false;
input1mouse = false; input1mouse = false;
@@ -1264,14 +1265,14 @@ void loadROM()
break; break;
case 0x08: //Mouse or Multitap port 2 case 0x08: //Mouse or Multitap port 2
snesmouse = 2; device2 = 1;
input2just = false; input2just = false;
input2scope = false; input2scope = false;
input1mouse = false; input1mouse = false;
break; break;
case 0x10: //Mouse port 1 case 0x10: //Mouse port 1
snesmouse = 1; device1 = 1;
input2mouse = false; input2mouse = false;
input2just = false; input2just = false;
input2scope = false; input2scope = false;
@@ -1279,14 +1280,15 @@ void loadROM()
break; break;
case 0x20: //Mouse or Gamepad port 1 case 0x20: //Mouse or Gamepad port 1
snesmouse = 1; device1 = 1;
input2mouse = false; input2mouse = false;
input2just = false; input2just = false;
input2scope = false; input2scope = false;
break; break;
case 0x22: //Mouse or Gamepad port 1 and port 2 case 0x22: //Mouse or Gamepad port 1 and port 2
snesmouse = 1; device1 = 1;
device2 = 1;
input2just = false; input2just = false;
input2scope = false; input2scope = false;
break; break;
@@ -1303,7 +1305,8 @@ void loadROM()
memmove((unsigned char *)romdata, ((unsigned char *)romdata)+512, curromspace); memmove((unsigned char *)romdata, ((unsigned char *)romdata)+512, curromspace);
} }
snesinputdefault = snesmouse; snesinputdefault1 = device1;
snesinputdefault2 = device2;
SplitSupport(); SplitSupport();

View File

@@ -120,7 +120,6 @@ unsigned char Sup48mbit = 1; // Support 48mbit roms
unsigned char Sup16mbit = 0; // Support 16mbit roms unsigned char Sup16mbit = 0; // Support 16mbit roms
unsigned char dmadeddis = 0; // DMA deduction unsigned char dmadeddis = 0; // DMA deduction
unsigned char antienab = 0; // Interpolation Enabled unsigned char antienab = 0; // Interpolation Enabled
unsigned char snesmouse = 0; // Mouse status (1 = enabled)
unsigned char device1 = 0; // Device in port 1? 0 = Gamepad unsigned char device1 = 0; // Device in port 1? 0 = Gamepad
unsigned char device2 = 0; // Device in port 2? unsigned char device2 = 0; // Device in port 2?
unsigned char OldStyle = 1; // Old style joystick on unsigned char OldStyle = 1; // Old style joystick on
@@ -176,42 +175,56 @@ extern bool input2gp;
extern bool input2mouse; extern bool input2mouse;
extern bool input2scope; extern bool input2scope;
extern bool input2just; extern bool input2just;
extern unsigned char snesmouse; void cycleinputdevice1()
void cycleinputdevice()
{ {
for (;;) for (;;)
{ {
snesmouse++; device1++;
if (snesmouse >= 6) if (device1 >= 2)
{ {
snesmouse = 0; device1 = 0;
} }
if (snesmouse == 0) if (device1 == 0)
{ {
if (input1gp && input2gp) { return; } if (input1gp) { return; }
snesmouse++; device1++;
} }
if (snesmouse == 1) if (device1 == 1)
{ {
if (input1mouse) { return; } if (input1mouse) { return; }
snesmouse++;
} }
if (snesmouse == 2) }
}
void cycleinputdevice2()
{
for (;;)
{
device2++;
if (device2 >= 5)
{
device2 = 0;
}
if (device2 == 0)
{
if (input2gp) { return; }
device2++;
}
if (device2 == 1)
{ {
if (input2mouse) { return; } if (input2mouse) { return; }
snesmouse++; device2++;
} }
if (snesmouse == 3) if (device2 == 2)
{
if (input2mouse) { return; }
snesmouse++;
}
if (snesmouse == 4)
{ {
if (input2scope) { return; } if (input2scope) { return; }
snesmouse++; device2++;
} }
if (snesmouse == 5) if (device2 == 3)
{
if (input2just) { return; }
device2++;
}
if (device2 == 4)
{ {
if (input2just) { return; } if (input2just) { return; }
} }

View File

@@ -27,7 +27,7 @@ EXTSYM Voice6Status,Voice7Disable,Voice7Status,bgcmsung,bgmode,cbackofsaddr
EXTSYM cgmod,debuggeron,disableeffects,frameskip,frskipper EXTSYM cgmod,debuggeron,disableeffects,frameskip,frskipper
EXTSYM maxbr,modeused,mousexloc,mouseyloc,newengen EXTSYM maxbr,modeused,mousexloc,mouseyloc,newengen
EXTSYM nextdrawallng,oamaddr,pal16b,pal16bxcl,pressed,prevbright,prevpal EXTSYM nextdrawallng,oamaddr,pal16b,pal16bxcl,pressed,prevbright,prevpal
EXTSYM scaddsngb,scaddtngb,scaddtngbx,scfbl,scrndis,snesmouse,sprprdrn,t1cc EXTSYM scaddsngb,scaddtngb,scaddtngbx,scfbl,scrndis,sprprdrn,t1cc
EXTSYM vidbright,vidbuffer,vidbufferm,vidbufferofsa,vidbufferofsb,vidmemch2 EXTSYM vidbright,vidbuffer,vidbufferm,vidbufferofsa,vidbufferofsb,vidmemch2
EXTSYM statefileloc,fnamest,GUIClick,MousePRClick,ngmsdraw,cvidmode EXTSYM statefileloc,fnamest,GUIClick,MousePRClick,ngmsdraw,cvidmode
EXTSYM KeyDisableSC0,KeyDisableSC1,KeyDisableSC2,KeyDisableSC3,KeyDisableSC4 EXTSYM KeyDisableSC0,KeyDisableSC1,KeyDisableSC2,KeyDisableSC3,KeyDisableSC4
@@ -46,9 +46,11 @@ EXTSYM FPSOn,pl12s34,bg1ptr,bg2ptr,bg3ptr,bg4ptr,cachebg1,resolutn,curypos
EXTSYM oamram,objhipr,objptr,objptrn,objsize1,objsize2,spritetablea,sprleftpr EXTSYM oamram,objhipr,objptr,objptrn,objsize1,objsize2,spritetablea,sprleftpr
EXTSYM sprlefttot,vcache4b,objadds1,objadds2,objmovs1,objmovs2,tltype4b EXTSYM sprlefttot,vcache4b,objadds1,objadds2,objmovs1,objmovs2,tltype4b
EXTSYM vidmemch4,vram,bgptr,bgptrc,bgptrd,curtileptr,vcache2b,vcache8b,vidmemch8 EXTSYM vidmemch4,vram,bgptr,bgptrc,bgptrd,curtileptr,vcache2b,vcache8b,vidmemch8
EXTSYM offsetmshl,NextLineCache,tltype2b,tltype8b,objwlrpos,snesinputdefault EXTSYM offsetmshl,NextLineCache,tltype2b,tltype8b,objwlrpos
EXTSYM cycleinputdevice,SRAMChdir,EmuSpeed,SDRatio,FFRatio,DisplayBatteryStatus EXTSYM cycleinputdevice,SRAMChdir,EmuSpeed,SDRatio,FFRatio,DisplayBatteryStatus
EXTSYM KeyResetSpeed,KeyEmuSpeedUp,KeyEmuSpeedDown,KeyDisplayBatt,EMUPause EXTSYM KeyResetSpeed,KeyEmuSpeedUp,KeyEmuSpeedDown,KeyDisplayBatt,EMUPause
EXTSYM device1,device2,snesinputdefault1,snesinputdefault2
EXTSYM KeyExtraEnab1,KeyExtraEnab2,cycleinputdevice1,cycleinputdevice2
; Process stuff & Cache sprites ; Process stuff & Cache sprites
@@ -408,7 +410,9 @@ NEWSYM cachevideo
push edx push edx
cmp byte[GUIClick],0 cmp byte[GUIClick],0
je .noclick je .noclick
cmp byte[snesmouse],0 cmp byte[device1],0
jne .noclick
cmp byte[device2],0
jne .noclick jne .noclick
call Get_MouseData call Get_MouseData
test bx,02h test bx,02h
@@ -528,46 +532,60 @@ NEWSYM cachevideo
mov byte[disableeffects],0 mov byte[disableeffects],0
mov byte[osm2dis],0 mov byte[osm2dis],0
mov byte[EmuSpeed],29 mov byte[EmuSpeed],29
mov al,[snesinputdefault] mov al,[snesinputdefault1]
mov [snesmouse],al mov [device1],al
mov al,[snesinputdefault2]
mov [device2],al
mov dword[Msgptr],panickeyp mov dword[Msgptr],panickeyp
mov eax,[MsgCount] mov eax,[MsgCount]
mov [MessageOn],eax mov [MessageOn],eax
.nodis6 .nodis6
mov eax,[KeyExtraEnab] mov eax,[KeyExtraEnab1]
test byte[pressed+eax],1 test byte[pressed+eax],1
je near .nodis7 je near .nodisd1
mov byte[pressed+eax],2 mov byte[pressed+eax],2
pushad pushad
call cycleinputdevice call cycleinputdevice1
popad popad
mov dword[Msgptr],snesle
cmp byte[snesmouse],0
jne .nom0
mov dword[Msgptr],snesmousep0 mov dword[Msgptr],snesmousep0
.nom0 cmp byte[device1],1
cmp byte[snesmouse],1 jne .nom11
jne .nom1
mov dword[Msgptr],snesmousep1 mov dword[Msgptr],snesmousep1
.nom1 .nom11
cmp byte[snesmouse],2
jne .nom2
mov dword[Msgptr],snesmousep2
.nom2
cmp byte[snesmouse],3
jne .nom3
mov dword[Msgptr],snesmouse12
.nom3
cmp byte[snesmouse],4
jne .nom4
mov dword[Msgptr],snesss
mov word[mousexloc],128
mov word[mouseyloc],112
.nom4
mov eax,[MsgCount] mov eax,[MsgCount]
mov [MessageOn],eax mov [MessageOn],eax
call Get_MousePositionDisplacement call Get_MousePositionDisplacement
.nodis7 .nodisd1
mov eax,[KeyExtraEnab2]
test byte[pressed+eax],1
je near .nodisd2
mov byte[pressed+eax],2
pushad
call cycleinputdevice2
popad
mov dword[Msgptr],snesmousep0
cmp byte[device2],1
jne .nom21
mov dword[Msgptr],snesmousep2
.nom21
cmp byte[device2],2
jne .nom22
mov dword[Msgptr],snesss
mov word[mousexloc],128
mov word[mouseyloc],112
.nom22
cmp byte[device2],3
jne .nom23
mov dword[Msgptr],snesle1
.nom23
cmp byte[device2],4
jne .nom24
mov dword[Msgptr],snesle2
.nom24
mov eax,[MsgCount]
mov [MessageOn],eax
call Get_MousePositionDisplacement
.nodisd2
mov eax,[KeyNewGfxSwt] mov eax,[KeyNewGfxSwt]
test byte[pressed+eax],1 test byte[pressed+eax],1
je near .nodis8 je near .nodis8
@@ -955,12 +973,12 @@ NEWSYM curcolbg2, db 0
NEWSYM curcolbg3, db 0 NEWSYM curcolbg3, db 0
NEWSYM curcolbg4, db 0 NEWSYM curcolbg4, db 0
NEWSYM panickeyp, db 'ALL SWITCHES NORMAL',0 NEWSYM panickeyp, db 'ALL SWITCHES NORMAL',0
NEWSYM snesmousep0, db 'MOUSE/SUPER SCOPE DISABLED',0 NEWSYM snesmousep0, db 'EXTRA DEVICES DISABLED',0
NEWSYM snesmousep1, db 'MOUSE ENABLED IN PORT 1',0 NEWSYM snesmousep1, db 'MOUSE ENABLED IN PORT 1',0
NEWSYM snesmousep2, db 'MOUSE ENABLED IN PORT 2',0 NEWSYM snesmousep2, db 'MOUSE ENABLED IN PORT 2',0
NEWSYM snesmouse12, db 'MOUSE ENABLED IN PORT 1 AND 2',0
NEWSYM snesss, db 'SUPER SCOPE ENABLED',0 NEWSYM snesss, db 'SUPER SCOPE ENABLED',0
NEWSYM snesle, db 'LETHAL ENFORCER GUN ENABLED',0 NEWSYM snesle1, db '1 JUSTIFIER ENABLED',0
NEWSYM snesle2, db '2 JUSTIFIERS ENABLED',0
NEWSYM windissw, db 'WINDOWING DISABLED',0 NEWSYM windissw, db 'WINDOWING DISABLED',0
NEWSYM winenasw, db 'WINDOWING ENABLED',0 NEWSYM winenasw, db 'WINDOWING ENABLED',0
NEWSYM ofsdissw, db 'OFFSET MODE DISABLED',0 NEWSYM ofsdissw, db 'OFFSET MODE DISABLED',0

View File

@@ -24,7 +24,7 @@ EXTSYM BGMA,V8Mode,antienab,cacheud,cbitmode,ccud,cfield,cgram,coladdb,coladdg
EXTSYM coladdr,curblank,curfps,cvidmode,delay,extlatch,fnamest,En2xSaI EXTSYM coladdr,curblank,curfps,cvidmode,delay,extlatch,fnamest,En2xSaI
EXTSYM gammalevel,hirestiledat,ignor512,latchx,latchy,maxbr,ForceNewGfxOff EXTSYM gammalevel,hirestiledat,ignor512,latchx,latchy,maxbr,ForceNewGfxOff
EXTSYM newengen,nextframe,objptr,pressed,prevpal,res512switch,resolutn EXTSYM newengen,nextframe,objptr,pressed,prevpal,res512switch,resolutn
EXTSYM romispal,scaddtype,scanlines,selcA000,snesmouse,t1cc,vcache4b,vesa2_bpos EXTSYM romispal,scaddtype,scanlines,selcA000,t1cc,vcache4b,vesa2_bpos
EXTSYM spritetablea,vesa2_clbit,vesa2_gpos,vesa2_rpos,vesa2red10,vesa2selec EXTSYM spritetablea,vesa2_clbit,vesa2_gpos,vesa2_rpos,vesa2red10,vesa2selec
EXTSYM vidbuffer,vram,KeyStateSelct,soundon,Open_File,Read_File EXTSYM vidbuffer,vram,KeyStateSelct,soundon,Open_File,Read_File
EXTSYM Close_File,Create_File,Write_File,Get_File_Date,makepal EXTSYM Close_File,Create_File,Write_File,Get_File_Date,makepal
@@ -39,6 +39,7 @@ EXTSYM CSStatus2,CSStatus3,SpecialLine,Clear2xSaIBuffer,vidbufferofsb,bg1scroly
EXTSYM bg1objptr,DecompAPtr,HalfTransB,HalfTransC,cur_zst_size,old_zst_size EXTSYM bg1objptr,DecompAPtr,HalfTransB,HalfTransC,cur_zst_size,old_zst_size
EXTSYM MovieProcessing,mzt_chdir,UpChdir,MovieFrameStr,GetMovieFrameStr EXTSYM MovieProcessing,mzt_chdir,UpChdir,MovieFrameStr,GetMovieFrameStr
EXTSYM MovieDisplayFrame EXTSYM MovieDisplayFrame
EXTSYM MouseCount,device2
%ifdef __MSDOS__ %ifdef __MSDOS__
EXTSYM SB_blank,vsyncon,Triplebufen,granadd EXTSYM SB_blank,vsyncon,Triplebufen,granadd
@@ -147,14 +148,61 @@ NEWSYM showvideo
EXTSYM multiMouseMode,Mouse1MoveX,Mouse1MoveY,Mouse2MoveX,Mouse2MoveY,MultiMouseProcess,MouseToRead EXTSYM multiMouseMode,Mouse1MoveX,Mouse1MoveY,Mouse2MoveX,Mouse2MoveY,MultiMouseProcess,MouseToRead
%endif %endif
NEWSYM processmouse NEWSYM processmouse1
push esi push esi
push edi push edi
push edx push edx
push ebx push ebx
call Get_MouseData call Get_MouseData
mov [mousebuttons],bx mov [mousebuttons],bx
cmp byte[snesmouse],4 cmp byte[MouseCount],1
jle .nomultimouse
pushad
call MultiMouseProcess
popad
mov cx,[Mouse1MoveX]
mov dx,[Mouse1MoveY]
jmp .mousestuff
.nomultimouse
call Get_MousePositionDisplacement
.mousestuff
mov word[mousexpos],0
cmp cx,0
je .noxchange
mov byte[mousexdir],0
cmp cx,0
jge .noneg
mov byte[mousexdir],1
neg cx
.noneg
mov [mousexpos],cx
.noxchange
mov word[mouseypos],0
cmp dx,0
je .noychange
mov byte[mouseydir],0
cmp dx,0
jge .noneg2
mov byte[mouseydir],1
neg dx
.noneg2
mov [mouseypos],dx
.noychange
xor ecx,ecx
pop ebx
pop edx
pop edi
pop esi
ret
NEWSYM processmouse2
push esi
push edi
push edx
push ebx
call Get_MouseData
mov [mousebuttons],bx
cmp byte[device2],2
jne .ss jne .ss
cmp byte[pressed+13],0 cmp byte[pressed+13],0
je .noautosw je .noautosw
@@ -173,26 +221,22 @@ NEWSYM processmouse
.noautosw .noautosw
mov byte[ssautoswb],0 mov byte[ssautoswb],0
.ss .ss
cmp byte[snesmouse],3 cmp byte[MouseCount],1
jne .nomultimouse jle .nomultimouse
pushad pushad
call MultiMouseProcess call MultiMouseProcess
popad popad
cmp byte[MouseToRead],2
je .getmouse2
mov cx,[Mouse1MoveX]
mov dx,[Mouse1MoveY]
jmp .mousestuff
.getmouse2
mov cx,[Mouse2MoveX] mov cx,[Mouse2MoveX]
mov dx,[Mouse2MoveY] mov dx,[Mouse2MoveY]
jmp .mousestuff jmp .mousestuff
.nomultimouse .nomultimouse
call Get_MousePositionDisplacement call Get_MousePositionDisplacement
.mousestuff .mousestuff
cmp byte[snesmouse],5 cmp byte[device2],3
je .le je .le
cmp byte[snesmouse],4 cmp byte[device2],4
je .le
cmp byte[device2],2
jne .ss2 jne .ss2
.le .le
add word[mousexloc],cx add word[mousexloc],cx
@@ -220,9 +264,11 @@ NEWSYM processmouse
.noneg .noneg
mov [mousexpos],cx mov [mousexpos],cx
.noxchange .noxchange
cmp byte[snesmouse],5 cmp byte[device2],3
je .le2 je .le2
cmp byte[snesmouse],4 cmp byte[device2],4
je .le2
cmp byte[device2],2
jne .ss3 jne .ss3
.le2 .le2
add word[mouseyloc],dx add word[mouseyloc],dx
@@ -3325,7 +3371,7 @@ NEWSYM vidpaste
je .noclock je .noclock
call ClockOutput call ClockOutput
.noclock .noclock
cmp byte[snesmouse],4 cmp byte[device2],2
je near .drawss je near .drawss
.returnfromdraw .returnfromdraw
mov ax,[resolutn] mov ax,[resolutn]

View File

@@ -2904,7 +2904,7 @@ void WinUpdateDevices()
} }
extern BYTE snesmouse; extern unsigned char device1, device2;
int GetMouseX(void) int GetMouseX(void)
{ {
@@ -2923,7 +2923,7 @@ int GetMouseX(void)
SetCursorPos(X + WindowWidth + 32, (int)(Y + (MouseY * WindowHeight / 224))); SetCursorPos(X + WindowWidth + 32, (int)(Y + (MouseY * WindowHeight / 224)));
} }
} }
else if (FullScreen == 0 && snesmouse == 0 && MouseButtonPressed == 0 && GUIOn2 == 1) else if (FullScreen == 0 && device1 == 0 && device2 == 0 && MouseButtonPressed == 0 && GUIOn2 == 1)
{ {
MouseInput->Unacquire(); MouseInput->Unacquire();
SetCursorPos(X + WindowWidth + 1, (int)(Y + (MouseY * WindowHeight / 224))); SetCursorPos(X + WindowWidth + 1, (int)(Y + (MouseY * WindowHeight / 224)));
@@ -2942,7 +2942,7 @@ int GetMouseX(void)
SetCursorPos(X - 32, (int)(Y + (MouseY * WindowHeight / 224))); SetCursorPos(X - 32, (int)(Y + (MouseY * WindowHeight / 224)));
} }
} }
else if (FullScreen == 0 && snesmouse == 0 && MouseButtonPressed == 0 && GUIOn2 == 1) else if (FullScreen == 0 && device1 == 0 && device2 == 0 && MouseButtonPressed == 0 && GUIOn2 == 1)
{ {
MouseInput->Unacquire(); MouseInput->Unacquire();
SetCursorPos(X - 1, (int)(Y + (MouseY * WindowHeight / 224))); SetCursorPos(X - 1, (int)(Y + (MouseY * WindowHeight / 224)));
@@ -2967,7 +2967,7 @@ int GetMouseY(void)
SetCursorPos((int)(X+(MouseX * WindowWidth / 256)), Y + WindowHeight + 32); SetCursorPos((int)(X+(MouseX * WindowWidth / 256)), Y + WindowHeight + 32);
} }
} }
else if (FullScreen == 0 && snesmouse == 0 && MouseButtonPressed == 0 && GUIOn2 == 1) else if (FullScreen == 0 && device1 == 0 && device2 == 0 && MouseButtonPressed == 0 && GUIOn2 == 1)
{ {
MouseInput->Unacquire(); MouseInput->Unacquire();
SetCursorPos((int)(X+(MouseX * WindowWidth / 256)), Y + WindowHeight + 1); SetCursorPos((int)(X+(MouseX * WindowWidth / 256)), Y + WindowHeight + 1);
@@ -2986,7 +2986,7 @@ int GetMouseY(void)
SetCursorPos((int)(X + (MouseX * WindowWidth / 256)), Y - 32); SetCursorPos((int)(X + (MouseX * WindowWidth / 256)), Y - 32);
} }
} }
else if (FullScreen == 0 && snesmouse == 0 && MouseButtonPressed == 0 && GUIOn2 == 1) else if (FullScreen == 0 && device1 == 0 && device2 == 0 && MouseButtonPressed == 0 && GUIOn2 == 1)
{ {
MouseInput->Unacquire(); MouseInput->Unacquire();
SetCursorPos((int)(X + (MouseX * WindowWidth / 256)), Y - 1); SetCursorPos((int)(X + (MouseX * WindowWidth / 256)), Y - 1);

View File

@@ -73,11 +73,11 @@ bool MovieWaiting = false;
enum MovieStatus { MOVIE_OFF = 0, MOVIE_PLAYBACK, MOVIE_RECORD, MOVIE_OLD_PLAY }; enum MovieStatus { MOVIE_OFF = 0, MOVIE_PLAYBACK, MOVIE_RECORD, MOVIE_OLD_PLAY };
#define SetMovieMode(mode) (MovieProcessing = (unsigned char)mode) #define SetMovieMode(mode) (MovieProcessing = (unsigned char)mode)
extern unsigned char snesmouse; extern unsigned char device1, device2;
extern unsigned short latchx, latchy; extern unsigned short latchx, latchy;
#define IS_MOUSE_1() (snesmouse == 1) #define IS_MOUSE_1() (device1 == 1)
#define IS_MOUSE_2() (snesmouse == 2) #define IS_MOUSE_2() (device2 == 1)
#define IS_SCOPE() (snesmouse == 3) #define IS_SCOPE() (device2 == 2)
void GUIDoReset(); void GUIDoReset();
void powercycle(bool); void powercycle(bool);