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 KeySprDisble, dd 6
NEWSYM KeyResetAll, dd 7
NEWSYM KeyExtraEnab, dd 8
NEWSYM KeyExtraEnab1, dd 0
NEWSYM KeyExtraEnab2, dd 0
NEWSYM KeyNewGfxSwt, dd 9
NEWSYM KeyWinDisble, dd 10
NEWSYM KeyOffsetMSw, dd 11

View File

@@ -37,7 +37,7 @@ EXTSYM cachesprites,opcjmptab,CheatOn
EXTSYM INTEnab,JoyCRead,NMIEnab,NumCheats,CurrentExecSA1,ReadInputDevice
EXTSYM StartDrawNewGfx,VIRQLoc,cachevideo,cfield,cheatdata,curblank,curnmi
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 JoyBOrig,JoyBNow,JoyCOrig,JoyCNow,JoyDOrig,JoyDNow,JoyEOrig,JoyENow
EXTSYM SA1Message,MultiTapStat,idledetectspc,SA1Control,SA1Enable,SA1IRQEnable
@@ -54,6 +54,7 @@ EXTSYM MovieSeekBehind,SaveSramData,BackupCVFrame,RestoreCVFrame,loadstate
EXTSYM KeyInsrtChap,KeyNextChap,KeyPrevChap,MovieInsertChapter,MovieSeekAhead
EXTSYM ResetDuringMovie,EMUPauseKey,INCRFrameKey,MovieWaiting,NoInputRead
EXTSYM AllocatedRewindStates,PauseFrameMode,RestorePauseFrame,BackupPauseFrame
EXTSYM device2
%ifdef __MSDOS__
EXTSYM dssel,Game60hzcall,NextLineStart,FlipWait,LastLineStart
@@ -1365,11 +1366,18 @@ NEWSYM cpuover
jmp DosExit
.noprocmovie
cmp byte[snesmouse],5
jne .nolethalen
cmp byte[device2],3
jne .nolethalen1
mov eax,[LethEnData]
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
jz .noresetjoy
@@ -2130,11 +2138,16 @@ NEWSYM execsingle
mov byte[JoyCRead],0
.noresetjoy
cmp byte[snesmouse],4
jne .nolethalen
cmp byte[device2],3
jne .nolethalen1
mov eax,[LethEnData]
mov [JoyBNow],eax
.nolethalen
.nolethalen1
cmp byte[device2],4
jne .nolethalen2
mov eax,[LethEnData]
mov [JoyBNow],eax
.nolethalen2
mov byte[MultiTapStat],80h
mov byte[NMIEnab],81h

View File

@@ -21,7 +21,7 @@
EXTSYM SFXEnable,regptr,initsfxregsr,initSA1regs,SA1Enable,initSDD1regs
EXTSYM SPC7110Enable,initSPC7110regs,RTCEnable,RTCReset,curypos,cycpl
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
SECTION .text
@@ -908,7 +908,7 @@ SECTION .text
; Joystick Data for controller 2 and 4
reg4017r:
cmp byte[snesmouse],0
cmp byte[device2],0
jne .nomultitap
cmp byte[MultiTap],1
je .multitap

View File

@@ -118,7 +118,7 @@ EXTSYM RewindStates,RewindFrames,PauseRewind,PauseLoad,SRAMState,AutoState
EXTSYM LatestSave,SRAMSave5Sec,AutoIncSaveSlot,pl3selk,pl4selk,pl5selk
EXTSYM pl1Atk,pl2Atk,pl3Atk,pl4Atk,pl5Atk,pl3contrl,KeyUsePlayer1234
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 CalibYmax,CalibXmin209,CalibXmax209,CalibYmin209,CalibYmax209
EXTSYM KeyBGDisble0,KeyBGDisble1,KeyBGDisble2,KeyBGDisble3,KeySprDisble

View File

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

View File

@@ -2989,7 +2989,7 @@ DisplayGameOptns: ; Misc Key Window
DDrawBox 9,77,99,[KeyUsePlayer1234]
DDrawBox 9,77,109,[KeyResetAll]
DDrawBox 9,77,119,[KeyExtraEnab]
;DDrawBox 9,77,119,[KeyExtraEnab]
DDrawBox 9,77,129,[KeyDisplayFPS]
DDrawBox 9,77,139,[KeyIncreaseGamma]
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 pl4leftk,pl4rightk,pl4selk,pl4startk,pl4upk,mousebuttons,mousexdir,pl5Ak
EXTSYM pl5Bk,pl5Lk,pl5Rk,pl5Xk,pl5Yk,pl5contrl,pl5downk,pl5leftk,pl5rightk
EXTSYM pl5selk,pl5startk,pl5upk,mouseydir,mousexpos,mouseypos,snesmouse,sram
EXTSYM processmouse,ssautosw,GUIDelayB,pl12s34,pl1Xtk,pl1Ytk,pl1Atk,pl1Btk
EXTSYM pl5selk,pl5startk,pl5upk,mouseydir,mousexpos,mouseypos,sram
EXTSYM ssautosw,GUIDelayB,pl12s34,pl1Xtk,pl1Ytk,pl1Atk,pl1Btk
EXTSYM pl2Xtk,pl2Ytk,pl2Atk,pl2Btk,pl3Xtk,pl3Ytk,pl3Atk,pl3Btk,pl4Xtk,pl4Ytk
EXTSYM pl4Atk,pl4Btk,pl1ULk,pl1URk,pl1DLk,pl1DRk,pl2ULk,pl2URk,pl2DLk,pl2DRk
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 memtabler8,memtablew16,memtablew8,sfxramdata,wramreadptr
EXTSYM wramwriteptr,loadstate2,CMovieExt,MoviePlay,MovieDumpRaw,AllowUDLR
EXTSYM device1,device2,processmouse1,processmouse2
;initc.c
EXTSYM clearmem,clearSPCRAM,PatchUsingIPS,ZOpenFileName,loadROM,SPC7110IndexSize
@@ -719,21 +720,10 @@ NEWSYM ReadInputDevice
mov dword[JoyAOrig],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
cmp byte[snesmouse],1
cmp byte[device1],1
jne .nomouse1
call processmouse
call processmouse1
ProcSNESMouse JoyAOrig
jmp .noinput1
.nomouse1
@@ -781,15 +771,16 @@ NEWSYM ReadInputDevice
and dword[JoyAOrig],7FFFFFFFh
.noinput1
mov dword[JoyBOrig],0
cmp byte[snesmouse],2
cmp byte[device2],1
jne .nomouse2
call processmouse
mov byte[MouseToRead],1
call processmouse2
ProcSNESMouse JoyBOrig
jmp .noinput2
.nomouse2
cmp byte[snesmouse],4
cmp byte[device2],2
jne .nosuperscope
call processmouse
call processmouse2
mov byte[JoyBOrig+2],0FFh
mov al,[ssautosw]
test byte[mousebuttons],01h
@@ -807,9 +798,9 @@ NEWSYM ReadInputDevice
mov [JoyBOrig+3],al
jmp .noinput2
.nosuperscope
cmp byte[snesmouse],5
cmp byte[device2],3
jne .nolethalen
call processmouse
call processmouse2
mov eax,[romdata]
cmp dword[eax+1000h],0AD20C203h
jne .not
@@ -982,24 +973,17 @@ NEWSYM ReadInputDevice
or dword[JoyEOrig],00008000h ; Joystick Enable
.noinput5
cmp byte[pl12s34],1
je .pl1234
.nopl1234
ret
.pl1234
cmp byte[snesmouse],5
je .nopl1234
cmp byte[snesmouse],1
je .nopl13
jne .nop24
cmp byte[device1],0
jne .nop13
mov eax,[JoyCOrig]
or [JoyAOrig],eax
.nopl13
cmp byte[snesmouse],2
je .nopl24
cmp byte[snesmouse],4
je .nopl24
.nop13
cmp byte[device2],0
jne .nop24
mov eax,[JoyDOrig]
or [JoyBOrig],eax
.nopl24
.nop24
ret
;*******************************************************

View File

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

View File

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

View File

@@ -27,7 +27,7 @@ EXTSYM Voice6Status,Voice7Disable,Voice7Status,bgcmsung,bgmode,cbackofsaddr
EXTSYM cgmod,debuggeron,disableeffects,frameskip,frskipper
EXTSYM maxbr,modeused,mousexloc,mouseyloc,newengen
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 statefileloc,fnamest,GUIClick,MousePRClick,ngmsdraw,cvidmode
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 sprlefttot,vcache4b,objadds1,objadds2,objmovs1,objmovs2,tltype4b
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 KeyResetSpeed,KeyEmuSpeedUp,KeyEmuSpeedDown,KeyDisplayBatt,EMUPause
EXTSYM device1,device2,snesinputdefault1,snesinputdefault2
EXTSYM KeyExtraEnab1,KeyExtraEnab2,cycleinputdevice1,cycleinputdevice2
; Process stuff & Cache sprites
@@ -408,7 +410,9 @@ NEWSYM cachevideo
push edx
cmp byte[GUIClick],0
je .noclick
cmp byte[snesmouse],0
cmp byte[device1],0
jne .noclick
cmp byte[device2],0
jne .noclick
call Get_MouseData
test bx,02h
@@ -528,46 +532,60 @@ NEWSYM cachevideo
mov byte[disableeffects],0
mov byte[osm2dis],0
mov byte[EmuSpeed],29
mov al,[snesinputdefault]
mov [snesmouse],al
mov al,[snesinputdefault1]
mov [device1],al
mov al,[snesinputdefault2]
mov [device2],al
mov dword[Msgptr],panickeyp
mov eax,[MsgCount]
mov [MessageOn],eax
.nodis6
mov eax,[KeyExtraEnab]
mov eax,[KeyExtraEnab1]
test byte[pressed+eax],1
je near .nodis7
je near .nodisd1
mov byte[pressed+eax],2
pushad
call cycleinputdevice
call cycleinputdevice1
popad
mov dword[Msgptr],snesle
cmp byte[snesmouse],0
jne .nom0
mov dword[Msgptr],snesmousep0
.nom0
cmp byte[snesmouse],1
jne .nom1
cmp byte[device1],1
jne .nom11
mov dword[Msgptr],snesmousep1
.nom1
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
.nom11
mov eax,[MsgCount]
mov [MessageOn],eax
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]
test byte[pressed+eax],1
je near .nodis8
@@ -955,12 +973,12 @@ NEWSYM curcolbg2, db 0
NEWSYM curcolbg3, db 0
NEWSYM curcolbg4, db 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 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 snesle1, db '1 JUSTIFIER ENABLED',0
NEWSYM snesle2, db '2 JUSTIFIERS ENABLED',0
NEWSYM windissw, db 'WINDOWING DISABLED',0
NEWSYM winenasw, db 'WINDOWING ENABLED',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 gammalevel,hirestiledat,ignor512,latchx,latchy,maxbr,ForceNewGfxOff
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 vidbuffer,vram,KeyStateSelct,soundon,Open_File,Read_File
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 MovieProcessing,mzt_chdir,UpChdir,MovieFrameStr,GetMovieFrameStr
EXTSYM MovieDisplayFrame
EXTSYM MouseCount,device2
%ifdef __MSDOS__
EXTSYM SB_blank,vsyncon,Triplebufen,granadd
@@ -147,14 +148,61 @@ NEWSYM showvideo
EXTSYM multiMouseMode,Mouse1MoveX,Mouse1MoveY,Mouse2MoveX,Mouse2MoveY,MultiMouseProcess,MouseToRead
%endif
NEWSYM processmouse
NEWSYM processmouse1
push esi
push edi
push edx
push ebx
call Get_MouseData
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
cmp byte[pressed+13],0
je .noautosw
@@ -173,26 +221,22 @@ NEWSYM processmouse
.noautosw
mov byte[ssautoswb],0
.ss
cmp byte[snesmouse],3
jne .nomultimouse
cmp byte[MouseCount],1
jle .nomultimouse
pushad
call MultiMouseProcess
popad
cmp byte[MouseToRead],2
je .getmouse2
mov cx,[Mouse1MoveX]
mov dx,[Mouse1MoveY]
jmp .mousestuff
.getmouse2
mov cx,[Mouse2MoveX]
mov dx,[Mouse2MoveY]
jmp .mousestuff
.nomultimouse
call Get_MousePositionDisplacement
.mousestuff
cmp byte[snesmouse],5
cmp byte[device2],3
je .le
cmp byte[snesmouse],4
cmp byte[device2],4
je .le
cmp byte[device2],2
jne .ss2
.le
add word[mousexloc],cx
@@ -220,9 +264,11 @@ NEWSYM processmouse
.noneg
mov [mousexpos],cx
.noxchange
cmp byte[snesmouse],5
cmp byte[device2],3
je .le2
cmp byte[snesmouse],4
cmp byte[device2],4
je .le2
cmp byte[device2],2
jne .ss3
.le2
add word[mouseyloc],dx
@@ -3325,7 +3371,7 @@ NEWSYM vidpaste
je .noclock
call ClockOutput
.noclock
cmp byte[snesmouse],4
cmp byte[device2],2
je near .drawss
.returnfromdraw
mov ax,[resolutn]

View File

@@ -2904,7 +2904,7 @@ void WinUpdateDevices()
}
extern BYTE snesmouse;
extern unsigned char device1, device2;
int GetMouseX(void)
{
@@ -2923,7 +2923,7 @@ int GetMouseX(void)
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();
SetCursorPos(X + WindowWidth + 1, (int)(Y + (MouseY * WindowHeight / 224)));
@@ -2942,7 +2942,7 @@ int GetMouseX(void)
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();
SetCursorPos(X - 1, (int)(Y + (MouseY * WindowHeight / 224)));
@@ -2967,7 +2967,7 @@ int GetMouseY(void)
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();
SetCursorPos((int)(X+(MouseX * WindowWidth / 256)), Y + WindowHeight + 1);
@@ -2986,7 +2986,7 @@ int GetMouseY(void)
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();
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 };
#define SetMovieMode(mode) (MovieProcessing = (unsigned char)mode)
extern unsigned char snesmouse;
extern unsigned char device1, device2;
extern unsigned short latchx, latchy;
#define IS_MOUSE_1() (snesmouse == 1)
#define IS_MOUSE_2() (snesmouse == 2)
#define IS_SCOPE() (snesmouse == 3)
#define IS_MOUSE_1() (device1 == 1)
#define IS_MOUSE_2() (device2 == 1)
#define IS_SCOPE() (device2 == 2)
void GUIDoReset();
void powercycle(bool);