Docs » Autodocs » lowlevel.library » ReadJoyPort
ReadJoyPort -- return the state of the selected joy/mouse port. (V40)
portState = ReadJoyPort(portNumber);
This function is used to determine what device is attached to the
joy port and the current position/button state. The user may attach
a mouse, game controller, or joystick to the port and this function
will dynamically detect which device is attached and return the
appropriatly formatted portState.
To determine the type of controller that is attached, this function
clocks the game controller and/or interprets changes in the joy
port data. Valid clocked data from the game controller is immediately
detected. However, to accuratly determine if a mouse or joystick is
attached, several calls to this function are required along with some
movement at the joy port by the user.
This function always executes immediatly.
This is a low level single threaded function that does not fit the
normal Amiga multitasking model. Only one task can be executing
this routine at any time. All others will return immediately with
The nature of this routine is not meant to encourage non-multitasking
friendly programming practices like polling loops. If your task
is waiting for a transition to be returned use a WaitTOF() between
calls to minimize the total system impact.
When called the first time, for each port, this function attempts to
acquire certain system resources. In order to aquire these resources
this function MUST be called from a task, or a DOS process. If this
function fails to aquire the necessary resources, it will
return with JP_TYPE_NOTAVAIL. Once the resources are aquired (return
value other than JP_TYPE_NOTAVAIL) this function may be used in
portNumber - port to read, in the range 0 to 3.
portState - bit map that identifies the device and the currentSetJoyPortAttrs
state of that device. The format of the bit map is
dependant on the type of device attached.
The following constants from <libraries/lowlevel.h>
are used to determine which device is attached and
the state of that device.
The type of device can be determined by applying
the mask JP_TYPE_MASK to the return value and comparing
the resultant value with the following:
JP_TYPE_NOTAVAIL port data unavailable
JP_TYPE_GAMECTLR game controller
JP_TYPE_UNKNOWN unknown device
If type = JP_TYPE_GAMECTLR the bit map of portState is:
JPF_BUTTON_BLUE Blue - Stop
JPF_BUTTON_RED Red - Select
JPF_BUTTON_YELLOW Yellow - Repeat
JPF_BUTTON_GREEN Green - Shuffle
JPF_BUTTON_FORWARD Charcoal - Forward
JPF_BUTTON_REVERSE Charcoal - Reverse
JPF_BUTTON_PLAY Grey - Play/Pause
If type = JP_TYPE_JOYSTK the bit map of portState is:
If type = JP_TYPE_MOUSE the bit map of portState is:
JPF_BUTTON_BLUE Right mouse
JPF_BUTTON_RED Left mouse
JPF_BUTTON_PLAY Middle mouse
JP_MVERT_MASK Mask for vertical counter
JP_MHORZ_MASK Mask for horizontal counter