Trashed snesmouse, now using devices. pagefault: please look over.
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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]
|
||||
|
||||
@@ -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]
|
||||
|
||||
@@ -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
|
||||
|
||||
;*******************************************************
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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; }
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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]
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user