gamepad compare axis (gamepad 0, "left analogue stick", value < 0 )
sub event Sprite.Name = "player1" -> (8 direction) simulate "Left" movement
gamepad compare axis (gamepad 1, "left analogue stick", value < 0 )
sub event Sprite.Name = "player2" -> (8 direction) simulate "Left" movement
etc etc...
So each gamepad has to get assigned its control inputs, then it applies them to each player
therefore gamepad 0 is all associated to sprite "player 1" , and gamepad 1 is all associated with player 2 etc etc
there's a fancier way of setting up reusable functions, but give that a go first.