示例#1
0
void KeyStatus::press(u32 pad, u32 index, s32 value)
{
	if (!IsAnalogKey(index)) {
		m_internal_button_pressure[pad][index] = value;
		if (m_state_acces[pad])
			clear_bit(m_internal_button_kbd[pad], index);
		else
			clear_bit(m_internal_button_joy[pad], index);
	} else {
		// clamp value
		if (value > MAX_ANALOG_VALUE)
			value = MAX_ANALOG_VALUE;
		else if (value < -MAX_ANALOG_VALUE)
			value = -MAX_ANALOG_VALUE;

		//                          Left -> -- -> Right
		// Value range :        FFFF8002 -> 0  -> 7FFE
		// Force range :			  80 -> 0  -> 7F
		// Normal mode : expect value 0  -> 80 -> FF
		// Reverse mode: expect value FF -> 7F -> 0
		u8 force = (value / 256);
		if (analog_is_reversed(pad,index))
			analog_set(pad, index, m_analog_released_val - force);
		else
			analog_set(pad, index, m_analog_released_val + force);
	}
}
示例#2
0
void KeyStatus::release(u32 pad, u32 index)
{
	if (!IsAnalogKey(index)) {
		if (m_state_acces[pad])
			set_bit(m_internal_button_kbd[pad], index);
		else
			set_bit(m_internal_button_joy[pad], index);
	} else {
		analog_set(pad, index, m_analog_released_val);
	}
}
示例#3
0
文件: hax.c 项目: ellbur/hax
void servo_set(AnalogOutIndex aout, ServoPosition sp) {
	analog_set(aout,sp);
}
示例#4
0
文件: hax.c 项目: ellbur/hax
void motor_set(AnalogOutIndex aout, MotorSpeed sp) {
	analog_set(aout,sp);
}