Difference between revisions of "JSX"

From MSX Game Library

(Created page with " == Protocol == === No-communication state === Write R#15 : Pin 8: LOW : Pin 6: ''any value'' Read R#14 : Any available value between 00-3F not already used === Start c...")
 
Line 59: Line 59:
 
* Next and last reading button states (for up to 6 boutons).
 
* Next and last reading button states (for up to 6 boutons).
  
 
+
[[File:Joystick.png|512px]]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  
 
[[Category:Proposal]][[Category:Proposal/Protocol]]
 
[[Category:Proposal]][[Category:Proposal/Protocol]]

Revision as of 23:48, 19 October 2024



Protocol

No-communication state

Write R#15

Pin 8: LOW
Pin 6: any value

Read R#14

Any available value between 00-3F not already used

Start communication and get ID

Write R#15

Pin 8: LOW (in case Pin 8 have been modified by another device)
Pin 6: any value

Write R#15

Pin 8: HIGH (start communication)
Pin 6: HIGH

Read R#14

Get ID
 7 6 5 4 3 2 1 0
–-–-–-–-–-–-–-–--
 x x A A A A B B
     │ │ │ │ └─┴── Number of button rows (1-4)
     └─┴─┴─┴────── Number of axis (1-16)

Read bytes

Repeat this step for each axis, then for each button row.

Write R#15

Pin 8: HIGH
Pin 6: LOW

Write R#15

Pin 8: HIGH
Pin 6: HIGH

Read R#14

Get 6-bits values
For axis: signed 6-bits value [-32 ; 31]
For boutons: bits field for 6 boutons (0: pressed, 1: released)

Example

For a Joypad with 2 axis (a stick with X and Y axis), and up to 6 buttons, the reading process would be:

  • After starting communication, first read to R#14 return the ID.
    ID: 0x04 [0000 0100] for 2 axis, and 1 button row,
  • Next reading give X-axis value [-32 ; 31],
  • Next reading give Y-axis value [-32 ; 31],
  • Next and last reading button states (for up to 6 boutons).

Joystick.png