[Back to JOYSTICK SWAG index] [Back to Main SWAG index] [Original]
{
> I'd like to use a joystick in a program but I'm not familiar
> with any algorithm to do that, suggestions?
Here's one I found lying around (public domain...<G>) on a local BBS... I
changed it around a little so it would fit in one message... It compiled into
a .TPU okay, so it *probably* works. Let me know if it doesn't... :)
--Ricky Godbee, Jr.
}
unit Joystick;
interface
uses Dos, Crt;
procedure JPos(Joystick_Number: byte; var Joystick_X, Joystick_Y: word);
procedure JBut(Joystick_Number: byte; var Button_1, Button_2: boolean);
implementation
var Register: Registers;
procedure InitRegisters;
begin
FillChar(Register, Sizeof(Register), 0);
end;
procedure JPos(Joystick_Number: byte; var Joystick_X, Joystick_Y: word);
begin
InitRegisters;
Register.AH := $84;
Register.DX := $01;
Intr($15, Register);
if Joystick_Number = 1 then
begin
Joystick_X := Register.AX;
Joystick_Y := Register.BX;
end
else if Joystick_Number = 2 then
begin
Joystick_X := Register.CX;
Joystick_Y := Register.DX;
end;
end;
procedure JBut(Joystick_Number: byte; var Button_1, Button_2: boolean);
begin
InitRegisters;
Register.AH := $84;
Register.DX := $00;
Intr($15, Register);
case Joystick_Number of
1: begin
Button_1 := (Register.AL and $20) <> $20;
Button_2 := (Register.AL and $10) <> $10;
end;
2: begin
Button_1 := (Register.AL and $40) <> $40;
Button_2 := (Register.AL and $80) <> $80;
end;
end;
end;
end.
[Back to JOYSTICK SWAG index] [Back to Main SWAG index] [Original]