Added support for all 5 snespads [ZDrumm]
This commit is contained in:
@@ -375,7 +375,9 @@ NEWSYM DosUpdateDevices
|
|||||||
; 1 = keyboard, 2 = 2b joystick, 3,4 = 4b joystick, 5 = 6b joystick
|
; 1 = keyboard, 2 = 2b joystick, 3,4 = 4b joystick, 5 = 6b joystick
|
||||||
; 6 = Sidewinder1, 7 = Sidewinder2, 8 = Sidewinder3, 9 = Sidewiner4
|
; 6 = Sidewinder1, 7 = Sidewinder2, 8 = Sidewinder3, 9 = Sidewiner4
|
||||||
; 10 = Grip0, 11 = Grip1, 12 = Grip2, 13 = Grip3, 14 = Parallel pad0
|
; 10 = Grip0, 11 = Grip1, 12 = Grip2, 13 = Grip3, 14 = Parallel pad0
|
||||||
; 15 = Parallel pad1, 16 = PPad LPT2, 17 = PPad2 LPT2, 18 = 8b joystick
|
; 15 = Parallel pad1, 16 = Parallel pad2, 17 = Parallel pad3
|
||||||
|
; 19 = Parallel pad4, 18 = 8b joystick
|
||||||
|
|
||||||
cmp al,1
|
cmp al,1
|
||||||
ja .joyokay
|
ja .joyokay
|
||||||
ret
|
ret
|
||||||
@@ -400,6 +402,11 @@ NEWSYM DosUpdateDevices
|
|||||||
or byte[PPad],8
|
or byte[PPad],8
|
||||||
ret
|
ret
|
||||||
.nopp3
|
.nopp3
|
||||||
|
cmp al,19
|
||||||
|
jne .nopp4
|
||||||
|
or byte[PPad],16
|
||||||
|
ret
|
||||||
|
.nopp4
|
||||||
cmp ah,0
|
cmp ah,0
|
||||||
jne near .port209
|
jne near .port209
|
||||||
cmp al,2
|
cmp al,2
|
||||||
@@ -800,6 +807,10 @@ NEWSYM DOSJoyRead
|
|||||||
jz .noport4
|
jz .noport4
|
||||||
call GetParallelPlayer4
|
call GetParallelPlayer4
|
||||||
.noport4
|
.noport4
|
||||||
|
test byte[PPad],16
|
||||||
|
jz .noport5
|
||||||
|
call GetParallelPlayer5
|
||||||
|
.noport5
|
||||||
cmp byte[JoyAltrn],0
|
cmp byte[JoyAltrn],0
|
||||||
je .nogpp2209
|
je .nogpp2209
|
||||||
cmp byte[NumGRiPs],2
|
cmp byte[NumGRiPs],2
|
||||||
@@ -1207,8 +1218,22 @@ NEWSYM SideWinder209
|
|||||||
%%nobutton
|
%%nobutton
|
||||||
%endmacro
|
%endmacro
|
||||||
|
|
||||||
|
%macro PPortHelpInv 3 ;needed for the pad 5
|
||||||
|
mov al, %1
|
||||||
|
out dx, al
|
||||||
|
mov al, 0F8h
|
||||||
|
out dx, al
|
||||||
|
inc dx
|
||||||
|
in al, dx
|
||||||
|
dec dx
|
||||||
|
and ax, %2
|
||||||
|
jz %%nobutton ;pad 5 is on pin 11, which is hardware inverted...
|
||||||
|
mov byte[pressed+%3], 1
|
||||||
|
%%nobutton
|
||||||
|
%endmacro
|
||||||
|
|
||||||
NEWSYM GetParallelPlayer1
|
NEWSYM GetParallelPlayer1
|
||||||
mov dx, 0378h ; may want to make this configurable
|
mov dx, 0378h
|
||||||
mov byte[pressed+180h],0
|
mov byte[pressed+180h],0
|
||||||
mov byte[pressed+181h],0
|
mov byte[pressed+181h],0
|
||||||
mov byte[pressed+182h],0
|
mov byte[pressed+182h],0
|
||||||
@@ -1221,7 +1246,7 @@ NEWSYM GetParallelPlayer1
|
|||||||
mov byte[pressed+189h],0
|
mov byte[pressed+189h],0
|
||||||
mov byte[pressed+18Ah],0
|
mov byte[pressed+18Ah],0
|
||||||
mov byte[pressed+18Bh],0
|
mov byte[pressed+18Bh],0
|
||||||
PPortHelp 0FAh, 40h, 180h
|
PPortHelp 0FAh, 40h, 180h ;Mask 40h (pin 10 of lpt : data for pad 1)
|
||||||
PPortHelp 0F9h, 40h, 181h
|
PPortHelp 0F9h, 40h, 181h
|
||||||
PPortHelp 0F9h, 40h, 182h
|
PPortHelp 0F9h, 40h, 182h
|
||||||
PPortHelp 0F9h, 40h, 183h
|
PPortHelp 0F9h, 40h, 183h
|
||||||
@@ -1236,7 +1261,7 @@ NEWSYM GetParallelPlayer1
|
|||||||
ret
|
ret
|
||||||
|
|
||||||
NEWSYM GetParallelPlayer2
|
NEWSYM GetParallelPlayer2
|
||||||
mov dx, 0378h ; may want to make this configurable
|
mov dx, 0378h
|
||||||
mov byte[pressed+190h],0
|
mov byte[pressed+190h],0
|
||||||
mov byte[pressed+191h],0
|
mov byte[pressed+191h],0
|
||||||
mov byte[pressed+192h],0
|
mov byte[pressed+192h],0
|
||||||
@@ -1249,7 +1274,7 @@ NEWSYM GetParallelPlayer2
|
|||||||
mov byte[pressed+199h],0
|
mov byte[pressed+199h],0
|
||||||
mov byte[pressed+19Ah],0
|
mov byte[pressed+19Ah],0
|
||||||
mov byte[pressed+19Bh],0
|
mov byte[pressed+19Bh],0
|
||||||
PPortHelp 0FAh, 20h, 190h
|
PPortHelp 0FAh, 20h, 190h ;Mask 20h (pin 12 of lpt : data for pad 2)
|
||||||
PPortHelp 0F9h, 20h, 191h
|
PPortHelp 0F9h, 20h, 191h
|
||||||
PPortHelp 0F9h, 20h, 192h
|
PPortHelp 0F9h, 20h, 192h
|
||||||
PPortHelp 0F9h, 20h, 193h
|
PPortHelp 0F9h, 20h, 193h
|
||||||
@@ -1264,7 +1289,7 @@ NEWSYM GetParallelPlayer2
|
|||||||
ret
|
ret
|
||||||
|
|
||||||
NEWSYM GetParallelPlayer3
|
NEWSYM GetParallelPlayer3
|
||||||
mov dx, 0278h ; may want to make this configurable
|
mov dx, 0378h
|
||||||
mov byte[pressed+1A0h],0
|
mov byte[pressed+1A0h],0
|
||||||
mov byte[pressed+1A1h],0
|
mov byte[pressed+1A1h],0
|
||||||
mov byte[pressed+1A2h],0
|
mov byte[pressed+1A2h],0
|
||||||
@@ -1277,22 +1302,22 @@ NEWSYM GetParallelPlayer3
|
|||||||
mov byte[pressed+1A9h],0
|
mov byte[pressed+1A9h],0
|
||||||
mov byte[pressed+1AAh],0
|
mov byte[pressed+1AAh],0
|
||||||
mov byte[pressed+1ABh],0
|
mov byte[pressed+1ABh],0
|
||||||
PPortHelp 0FAh, 40h, 1A0h
|
PPortHelp 0FAh, 10h, 1A0h ;Mask 10h (pin 13 of lpt : data for pad 3)
|
||||||
PPortHelp 0F9h, 40h, 1A1h
|
PPortHelp 0F9h, 10h, 1A1h
|
||||||
PPortHelp 0F9h, 40h, 1A2h
|
PPortHelp 0F9h, 10h, 1A2h
|
||||||
PPortHelp 0F9h, 40h, 1A3h
|
PPortHelp 0F9h, 10h, 1A3h
|
||||||
PPortHelp 0F9h, 40h, 1A4h
|
PPortHelp 0F9h, 10h, 1A4h
|
||||||
PPortHelp 0F9h, 40h, 1A5h
|
PPortHelp 0F9h, 10h, 1A5h
|
||||||
PPortHelp 0F9h, 40h, 1A6h
|
PPortHelp 0F9h, 10h, 1A6h
|
||||||
PPortHelp 0F9h, 40h, 1A7h
|
PPortHelp 0F9h, 10h, 1A7h
|
||||||
PPortHelp 0F9h, 40h, 1A8h
|
PPortHelp 0F9h, 10h, 1A8h
|
||||||
PPortHelp 0F9h, 40h, 1A9h
|
PPortHelp 0F9h, 10h, 1A9h
|
||||||
PPortHelp 0F9h, 40h, 1AAh
|
PPortHelp 0F9h, 10h, 1AAh
|
||||||
PPortHelp 0F9h, 40h, 1ABh
|
PPortHelp 0F9h, 10h, 1ABh
|
||||||
ret
|
ret
|
||||||
|
|
||||||
NEWSYM GetParallelPlayer4
|
NEWSYM GetParallelPlayer4
|
||||||
mov dx, 0278h ; may want to make this configurable
|
mov dx, 0378h
|
||||||
mov byte[pressed+1B0h],0
|
mov byte[pressed+1B0h],0
|
||||||
mov byte[pressed+1B1h],0
|
mov byte[pressed+1B1h],0
|
||||||
mov byte[pressed+1B2h],0
|
mov byte[pressed+1B2h],0
|
||||||
@@ -1305,18 +1330,46 @@ NEWSYM GetParallelPlayer4
|
|||||||
mov byte[pressed+1B9h],0
|
mov byte[pressed+1B9h],0
|
||||||
mov byte[pressed+1BAh],0
|
mov byte[pressed+1BAh],0
|
||||||
mov byte[pressed+1BBh],0
|
mov byte[pressed+1BBh],0
|
||||||
PPortHelp 0FAh, 20h, 1B0h
|
PPortHelp 0FAh, 08h, 1B0h
|
||||||
PPortHelp 0F9h, 20h, 1B1h
|
PPortHelp 0F9h, 08h, 1B1h ;Mask 08h (pin 15 of lpt : data for pad 4)
|
||||||
PPortHelp 0F9h, 20h, 1B2h
|
PPortHelp 0F9h, 08h, 1B2h
|
||||||
PPortHelp 0F9h, 20h, 1B3h
|
PPortHelp 0F9h, 08h, 1B3h
|
||||||
PPortHelp 0F9h, 20h, 1B4h
|
PPortHelp 0F9h, 08h, 1B4h
|
||||||
PPortHelp 0F9h, 20h, 1B5h
|
PPortHelp 0F9h, 08h, 1B5h
|
||||||
PPortHelp 0F9h, 20h, 1B6h
|
PPortHelp 0F9h, 08h, 1B6h
|
||||||
PPortHelp 0F9h, 20h, 1B7h
|
PPortHelp 0F9h, 08h, 1B7h
|
||||||
PPortHelp 0F9h, 20h, 1B8h
|
PPortHelp 0F9h, 08h, 1B8h
|
||||||
PPortHelp 0F9h, 20h, 1B9h
|
PPortHelp 0F9h, 08h, 1B9h
|
||||||
PPortHelp 0F9h, 20h, 1BAh
|
PPortHelp 0F9h, 08h, 1BAh
|
||||||
PPortHelp 0F9h, 20h, 1BBh
|
PPortHelp 0F9h, 08h, 1BBh
|
||||||
|
ret
|
||||||
|
|
||||||
|
NEWSYM GetParallelPlayer5
|
||||||
|
mov dx, 0378h
|
||||||
|
mov byte[pressed+1c0h],0
|
||||||
|
mov byte[pressed+1c1h],0
|
||||||
|
mov byte[pressed+1c2h],0
|
||||||
|
mov byte[pressed+1c3h],0
|
||||||
|
mov byte[pressed+1c4h],0
|
||||||
|
mov byte[pressed+1c5h],0
|
||||||
|
mov byte[pressed+1c6h],0
|
||||||
|
mov byte[pressed+1c7h],0
|
||||||
|
mov byte[pressed+1c8h],0
|
||||||
|
mov byte[pressed+1c9h],0
|
||||||
|
mov byte[pressed+1cAh],0
|
||||||
|
mov byte[pressed+1cBh],0
|
||||||
|
PPortHelpInv 0FAh, 80h, 1c0h
|
||||||
|
PPortHelpInv 0F9h, 80h, 1c1h ;Mask 80h (pin 11 of lpt : data for pad 5)
|
||||||
|
PPortHelpInv 0F9h, 80h, 1c2h
|
||||||
|
PPortHelpInv 0F9h, 80h, 1c3h
|
||||||
|
PPortHelpInv 0F9h, 80h, 1c4h
|
||||||
|
PPortHelpInv 0F9h, 80h, 1c5h
|
||||||
|
PPortHelpInv 0F9h, 80h, 1c6h
|
||||||
|
PPortHelpInv 0F9h, 80h, 1c7h
|
||||||
|
PPortHelpInv 0F9h, 80h, 1c8h
|
||||||
|
PPortHelpInv 0F9h, 80h, 1c9h
|
||||||
|
PPortHelpInv 0F9h, 80h, 1cAh
|
||||||
|
PPortHelpInv 0F9h, 80h, 1cBh
|
||||||
ret
|
ret
|
||||||
|
|
||||||
NEWSYM SetInputDevice209
|
NEWSYM SetInputDevice209
|
||||||
@@ -1612,6 +1665,23 @@ NEWSYM SetInputDevice209
|
|||||||
mov dword[eax+44],1BBh
|
mov dword[eax+44],1BBh
|
||||||
ret
|
ret
|
||||||
.nopp4
|
.nopp4
|
||||||
|
cmp bl,19
|
||||||
|
jne near .nopp5
|
||||||
|
mov dword[eax+40],1c0h
|
||||||
|
mov dword[eax+36],1c1h
|
||||||
|
mov dword[eax+0],1c2h
|
||||||
|
mov dword[eax+4],1c3h
|
||||||
|
mov dword[eax+8],1c4h
|
||||||
|
mov dword[eax+12],1c5h
|
||||||
|
mov dword[eax+16],1c6h
|
||||||
|
mov dword[eax+20],1c7h
|
||||||
|
mov dword[eax+28],1c8h
|
||||||
|
mov dword[eax+24],1c9h
|
||||||
|
mov dword[eax+32],1cAh
|
||||||
|
mov dword[eax+44],1cBh
|
||||||
|
ret
|
||||||
|
.nopp5
|
||||||
|
|
||||||
.exit
|
.exit
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user