Okay, so if anyone needs it this one gets the job done:
Code:
#define joy_available (num_joysticks >= 1)
#define joy_dpad_center (joy_available && joy_hat == -1)
#define joy_dpad_up (joy_available && joy_dpad_available && joy_hat != -1 && (joy_hat < 67.5 || joy_hat > 292.5))
#define joy_dpad_down (joy_available && joy_dpad_available && joy_hat != -1 && joy_hat > 112.5 && joy_hat < 247.5)
#define joy_dpad_left (joy_available && joy_dpad_available && joy_hat != -1 && joy_hat > 202.5 && joy_hat < 337.5)
#define joy_dpad_right (joy_available && joy_dpad_available && joy_hat != -1 && joy_hat > 22.5 && joy_hat < 157.5)

#define joy2_available (num_joysticks >= 2)
#define joy2_dpad_center (joy2_available && joy2_hat == -1)
#define joy2_dpad_up (joy2_available && joy2_dpad_available && joy2_hat != -1 && joy2_hat < 67.5 || joy2_hat > 292.5)
#define joy2_dpad_down (joy2_available && joy2_dpad_available && joy2_hat != -1 && joy2_hat > 112.5 && joy2_hat < 247.5)
#define joy2_dpad_left (joy2_available && joy2_dpad_available && joy2_hat != -1 && joy2_hat > 202.5 && joy2_hat < 337.5)
#define joy2_dpad_right (joy2_available && joy2_dpad_available && joy2_hat != -1 && joy2_hat > 22.5 && joy2_hat < 157.5)

byte joy_dpad_available = false;
byte joy2_dpad_available = false;

// no need to call this function yourself!! the engine will do this automatically on startup due to the '_startup' suffix
void __joy_dpad_check_startup()
{
	if(num_joysticks <= 0) // no direct input game controllers connected
		return;
	
	while(!joy_dpad_available || (joy2_available && !joy2_dpad_available))
	{
		if(joy_dpad_center) joy_dpad_available = true;
		if(joy2_dpad_center && joy2_available) joy2_dpad_available = true;
		
		wait(-1);
	}
}

Note that it only checks if a dpad is available every second. If you want it to check every frame you can use wait(1) instead.

edit#3: oops, forgot that there's no 'bool' in standard lite-c so I changed it to byte
also added some safety checks that prevent joy_dpad_up to be true when no gamepad is connected

Last edited by Kartoffel; 07/24/16 14:56.

POTATO-MAN saves the day! - Random