diff --git a/zsnes/src/init.asm b/zsnes/src/init.asm index 538c191b..b8c5fd75 100644 --- a/zsnes/src/init.asm +++ b/zsnes/src/init.asm @@ -718,12 +718,8 @@ NEWSYM ReadInputDevice ; Process Data mov dword[JoyAOrig],0 ; Get Player1 input device - cmp byte[multiMouseMode],1 - je .multimouse1 cmp byte[snesmouse],1 jne .nomouse1 -.multimouse1 - mov byte[MouseToRead],1 call processmouse ProcSNESMouse JoyAOrig jmp .noinput1 @@ -772,17 +768,20 @@ NEWSYM ReadInputDevice and dword[JoyAOrig],7FFFFFFFh .noinput1 mov dword[JoyBOrig],0 - cmp byte[multiMouseMode],1 - je .multimouse2 cmp byte[snesmouse],2 jne .nomouse2 -.multimouse2 - mov byte[MouseToRead],2 call processmouse ProcSNESMouse JoyBOrig jmp .noinput2 .nomouse2 cmp byte[snesmouse],3 + je .nomultimouse + mov byte[MouseToRead],1 + ProcSNESMouse JoyAOrig + mov byte[MouseToRead],2 + ProcSNESMouse JoyBOrig +.nomultimouse + cmp byte[snesmouse],4 jne .nosuperscope call processmouse mov byte[JoyBOrig+2],0FFh @@ -802,7 +801,7 @@ NEWSYM ReadInputDevice mov [JoyBOrig+3],al jmp .noinput2 .nosuperscope - cmp byte[snesmouse],4 + cmp byte[snesmouse],5 jne .nolethalen call processmouse mov eax,[romdata] diff --git a/zsnes/src/uic.c b/zsnes/src/uic.c index b7092784..00dd4119 100644 --- a/zsnes/src/uic.c +++ b/zsnes/src/uic.c @@ -180,7 +180,7 @@ void cycleinputdevice() for (;;) { snesmouse++; - if (snesmouse >= 5) + if (snesmouse >= 6) { snesmouse = 0; } @@ -201,10 +201,15 @@ void cycleinputdevice() } if (snesmouse == 3) { - if (input2scope) { return; } + if (input2mouse) { return; } snesmouse++; } if (snesmouse == 4) + { + if (input2scope) { return; } + snesmouse++; + } + if (snesmouse == 5) { if (input2just) { return; } } @@ -424,8 +429,6 @@ void DisplayBatteryStatus() #endif } - - // Make use of multiple mice. int MouseCount = 0; @@ -433,6 +436,7 @@ int Mouse1MoveX = 0; int Mouse2MoveX = 0; int Mouse1MoveY = 0; int Mouse2MoveY = 0; +int MousePoll = 0; unsigned char MouseToRead = 0; void MultiMouseShutdown() @@ -454,6 +458,9 @@ void MultiMouseProcess() ManyMouseEvent event; Mouse1MoveX = Mouse1MoveY = Mouse2MoveX = Mouse2MoveY = 0; + MousePoll ^= 1; + if (MousePoll) + { ManyMouse_PollEvent(&event); if (event.type == MANYMOUSE_EVENT_RELMOTION) @@ -465,3 +472,4 @@ void MultiMouseProcess() } } +} diff --git a/zsnes/src/vcache.asm b/zsnes/src/vcache.asm index 5c662bb8..b16c0728 100644 --- a/zsnes/src/vcache.asm +++ b/zsnes/src/vcache.asm @@ -556,10 +556,14 @@ NEWSYM cachevideo .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 -.nom3 +.nom4 mov eax,[MsgCount] mov [MessageOn],eax call Get_MousePositionDisplacement @@ -954,6 +958,7 @@ NEWSYM panickeyp, db 'ALL SWITCHES NORMAL',0 NEWSYM snesmousep0, db 'MOUSE/SUPER SCOPE DISABLED',0 NEWSYM snesmousep1, db 'MOUSE ENABLED IN PORT 1',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 snesle, db 'LETHAL ENFORCER GUN ENABLED',0 NEWSYM windissw, db 'WINDOWING DISABLED',0 diff --git a/zsnes/src/video/procvid.asm b/zsnes/src/video/procvid.asm index 73f4ae61..bea681e8 100644 --- a/zsnes/src/video/procvid.asm +++ b/zsnes/src/video/procvid.asm @@ -173,8 +173,8 @@ NEWSYM processmouse .noautosw mov byte[ssautoswb],0 .ss - cmp byte[multiMouseMode],0 - je .nomultimouse + cmp byte[snesmouse],3 + jne .nomultimouse pushad call MultiMouseProcess popad @@ -190,9 +190,9 @@ NEWSYM processmouse .nomultimouse call Get_MousePositionDisplacement .mousestuff - cmp byte[snesmouse],4 + cmp byte[snesmouse],5 je .le - cmp byte[snesmouse],3 + cmp byte[snesmouse],4 jne .ss2 .le add word[mousexloc],cx