Added support for all 5 snespads [ZDrumm]

This commit is contained in:
pagefault
2001-07-20 03:46:04 +00:00
parent fab2dfafe2
commit b8e9d29f05

View File

@@ -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