Lines Matching refs:kp
193 static void calc_dpd2pos_scale( KPADInsideStatus *kp ) in calc_dpd2pos_scale() argument
203 kp->dpd2pos_scale = sqrtf( sx * sx + sy * sy ) ;// Diagonal line in calc_dpd2pos_scale()
206 if ( kp->center_org.x < 0.0f ) { in calc_dpd2pos_scale()
207 sx += kp->center_org.x ; in calc_dpd2pos_scale()
209 sx -= kp->center_org.x ; in calc_dpd2pos_scale()
213 if ( kp->center_org.y < 0.0f ) { in calc_dpd2pos_scale()
214 sy += kp->center_org.y ; in calc_dpd2pos_scale()
216 sy -= kp->center_org.y ; in calc_dpd2pos_scale()
221 kp->dpd2pos_scale /= sx ; in calc_dpd2pos_scale()
223 kp->dpd2pos_scale /= sy ; in calc_dpd2pos_scale()
231 static void reset_kpad( KPADInsideStatus *kp ) in reset_kpad() argument
234 KPADStatus *sp = &kp->status ; in reset_kpad()
240 kp->btn_repeat_time = 0 ; in reset_kpad()
241 kp->btn_repeat_next = kp->btn_repeat_delay ; in reset_kpad()
245 kp->dpd_valid2_ct = 0 ; in reset_kpad()
250 sp->horizon.x = kp->acc_horizon.x = kp->obj_horizon.x = 1.0f ; in reset_kpad()
251 sp->horizon.y = kp->acc_horizon.y = kp->obj_horizon.y = 0.0f ; in reset_kpad()
258 sp->dist = kp->dist_org ; in reset_kpad()
261 kp->sec_dist = sp->dist ; in reset_kpad()
262 kp->sec_length = kp->trust_sec_length = kp_dist_vv1 / kp->sec_dist ; in reset_kpad()
263 kp->sec_nrm = kp->sec_nrm_hori ; in reset_kpad()
270 kp->hard_acc = sp->acc ; in reset_kpad()
272 kp->ah_circle_pos = kp->acc_horizon ; in reset_kpad()
273 kp->ah_circle_ct = kp_ah_circle_ct ; in reset_kpad()
276 kp->valid_objs = 0 ; in reset_kpad()
278 op = &kp->kobj_sample[ WPAD_DPD_MAX_OBJECTS - 1 ] ; in reset_kpad()
281 } while ( --op >= kp->kobj_sample ) ; in reset_kpad()
283 op = &kp->kobj_regular[ KPAD_USE_OBJECTS - 1 ] ; in reset_kpad()
286 } while ( --op >= kp->kobj_regular ) ; in reset_kpad()
289 kp->wpad_ring_idx = -1 ; // Process end of ring buffer in reset_kpad()
290 kp->work_ct = 0 ; // Number of times DPD processing is performed per game frame in reset_kpad()
294 if ( kp->wpad_chan_no < 0 ) { in reset_kpad()
295 WPADStopMotor( kp->wpad_chan_no + WPAD_MAX_CONTROLLERS ) ; in reset_kpad()
297 WPADStopMotor( kp->wpad_chan_no ) ; in reset_kpad()
317 kp->btn_cl_repeat_time = 0 ; in reset_kpad()
318 kp->btn_cl_repeat_next = kp->btn_cl_repeat_delay ; in reset_kpad()
331 KPADInsideStatus *kp = &inside_kpads[ chan ] ; in KPADCalibrateDPD() local
332 KPADStatus *sp = &kp->status ; in KPADCalibrateDPD()
338 if ( kp->valid_objs != KPAD_USE_OBJECTS ) return ( kp->valid_objs ) ; in KPADCalibrateDPD()
343 vx = kp->hard_acc.x ; in KPADCalibrateDPD()
344 vy = kp->hard_acc.y ; in KPADCalibrateDPD()
347 kp->accXY_nrm_hori.x = vx / f1 ; in KPADCalibrateDPD()
348 kp->accXY_nrm_hori.y = vy / f1 ; in KPADCalibrateDPD()
354 op1 = kp->kobj_sample ; in KPADCalibrateDPD()
364 kp->kobj_regular[0] = *op1 ; in KPADCalibrateDPD()
365 kp->kobj_regular[1] = *op2 ; in KPADCalibrateDPD()
369 kp->kobj_regular[0] = *op2 ; in KPADCalibrateDPD()
370 kp->kobj_regular[1] = *op1 ; in KPADCalibrateDPD()
377 calc_dpd2pos_scale( kp ) ; in KPADCalibrateDPD()
380 vx = kp->kobj_regular[KPAD_USE_OBJECTS-1].center.x - kp->kobj_regular[0].center.x ; in KPADCalibrateDPD()
381 vy = kp->kobj_regular[KPAD_USE_OBJECTS-1].center.y - kp->kobj_regular[0].center.y ; in KPADCalibrateDPD()
383 kp->sec_nrm_hori.x = vx * f1 ; in KPADCalibrateDPD()
384 kp->sec_nrm_hori.y = vy * f1 ; in KPADCalibrateDPD()
389 kp->dist_org = kp_dist_vv1 * f1 ; in KPADCalibrateDPD()
396 return ( kp->valid_objs ) ; in KPADCalibrateDPD()
405 KPADInsideStatus *kp = &inside_kpads[ chan ] ; in KPADSetSensorHeight() local
407 kp->center_org.x = 0.0f ; in KPADSetSensorHeight()
408 kp->center_org.y = -level ; in KPADSetSensorHeight()
409 calc_dpd2pos_scale( kp ) ; in KPADSetSensorHeight()
445 static void calc_button_repeat( KPADInsideStatus *kp, KPADStatus *sp, u32 dev_type ) in calc_button_repeat() argument
450 kp->btn_cl_repeat_time = 0 ; in calc_button_repeat()
451 kp->btn_cl_repeat_next = kp->btn_cl_repeat_delay ; in calc_button_repeat()
454 if ( sp->ex_status.cl.trig && kp->btn_cl_repeat_pulse ) { in calc_button_repeat()
459 kp->btn_cl_repeat_time += kp->work_ct ; in calc_button_repeat()
460 if ( kp->btn_cl_repeat_time >= KPAD_BTN_NO_RPT_DELAY ) { in calc_button_repeat()
461 kp->btn_cl_repeat_time -= KPAD_BTN_NO_RPT_DELAY ; in calc_button_repeat()
465 if ( kp->btn_cl_repeat_time >= kp->btn_cl_repeat_next ) { in calc_button_repeat()
469 kp->btn_cl_repeat_next += kp->btn_cl_repeat_pulse ; in calc_button_repeat()
472 if ( kp->btn_cl_repeat_time >= KPAD_BTN_RPT_TIME_MAX ) { in calc_button_repeat()
473 kp->btn_cl_repeat_time -= KPAD_BTN_RPT_TIME_MAX ; in calc_button_repeat()
474 kp->btn_cl_repeat_next -= KPAD_BTN_RPT_TIME_MAX ; in calc_button_repeat()
481 kp->btn_repeat_time = 0 ; in calc_button_repeat()
482 kp->btn_repeat_next = kp->btn_repeat_delay ; in calc_button_repeat()
485 if ( sp->trig && kp->btn_repeat_pulse ) { in calc_button_repeat()
491 kp->btn_repeat_time += kp->work_ct ; in calc_button_repeat()
492 if ( kp->btn_repeat_time >= KPAD_BTN_NO_RPT_DELAY ) { in calc_button_repeat()
493 kp->btn_repeat_time -= KPAD_BTN_NO_RPT_DELAY ; in calc_button_repeat()
497 if ( kp->btn_repeat_time >= kp->btn_repeat_next ) { in calc_button_repeat()
501 kp->btn_repeat_next += kp->btn_repeat_pulse ; in calc_button_repeat()
504 if ( kp->btn_repeat_time >= KPAD_BTN_RPT_TIME_MAX ) { in calc_button_repeat()
505 kp->btn_repeat_time -= KPAD_BTN_RPT_TIME_MAX ; in calc_button_repeat()
506 kp->btn_repeat_next -= KPAD_BTN_RPT_TIME_MAX ; in calc_button_repeat()
517 static void read_kpad_button( KPADInsideStatus *kp, void *vp, u32 dev_type ) in read_kpad_button() argument
519 KPADStatus *sp = &kp->status ; in read_kpad_button()
520 KPADEXStatus *ep = &kp->status.ex_status; in read_kpad_button()
528 if ( kp->wpad_chan_no < 0 ) return ; in read_kpad_button()
544 kp->wpad_chan_no -= WPAD_MAX_CONTROLLERS ; in read_kpad_button()
545 reset_kpad( kp ) ; in read_kpad_button()
559 kp->wpad_chan_no -= WPAD_MAX_CONTROLLERS ; in read_kpad_button()
560 reset_kpad( kp ); in read_kpad_button()
575 kp->wpad_chan_no -= WPAD_MAX_CONTROLLERS ; in read_kpad_button()
576 reset_kpad( kp ) ; in read_kpad_button()
592 calc_button_repeat( kp, sp, WPAD_DEV_CORE ) ; in read_kpad_button()
600 calc_button_repeat( kp, sp, WPAD_DEV_CLASSIC ); in read_kpad_button()
609 static void calc_acc( KPADInsideStatus *kp, f32 *acc, f32 acc2 ) in calc_acc() argument
623 if ( f1 >= kp->acc_play_radius ) { in calc_acc()
628 f1 /= kp->acc_play_radius ; in calc_acc()
632 f1 *= kp->acc_sensitivity ; in calc_acc()
642 static void calc_acc_horizon( KPADInsideStatus *kp ) in calc_acc_horizon() argument
648 f1 = sqrtf( kp->hard_acc.x * kp->hard_acc.x + kp->hard_acc.y * kp->hard_acc.y ) ; in calc_acc_horizon()
650 ax = kp->hard_acc.x / f1 ; in calc_acc_horizon()
651 ay = kp->hard_acc.y / f1 ; in calc_acc_horizon()
660 vx = kp->accXY_nrm_hori.x * ax + kp->accXY_nrm_hori.y * ay ; in calc_acc_horizon()
661 vy = kp->accXY_nrm_hori.y * ax - kp->accXY_nrm_hori.x * ay ; in calc_acc_horizon()
664 ax = ( vx - kp->acc_horizon.x ) * f1 + kp->acc_horizon.x ; in calc_acc_horizon()
665 ay = ( vy - kp->acc_horizon.y ) * f1 + kp->acc_horizon.y ; in calc_acc_horizon()
670 kp->acc_horizon.x = ax / f1 ; in calc_acc_horizon()
671 kp->acc_horizon.y = ay / f1 ; in calc_acc_horizon()
675 kp->ah_circle_pos.x += ( kp->acc_horizon.x - kp->ah_circle_pos.x ) * kp_ah_circle_pw ; in calc_acc_horizon()
676 kp->ah_circle_pos.y += ( kp->acc_horizon.y - kp->ah_circle_pos.y ) * kp_ah_circle_pw ; in calc_acc_horizon()
678 vx = kp->acc_horizon.x - kp->ah_circle_pos.x ; in calc_acc_horizon()
679 vy = kp->acc_horizon.y - kp->ah_circle_pos.y ; in calc_acc_horizon()
681 if ( kp->ah_circle_ct ) -- kp->ah_circle_ct ; in calc_acc_horizon()
683 kp->ah_circle_ct = kp_ah_circle_ct ; in calc_acc_horizon()
687 static void calc_acc_vertical( KPADInsideStatus *kp ) in calc_acc_vertical() argument
689 KPADStatus *sp = &kp->status ; in calc_acc_vertical()
694 ax = sqrtf( f2 = kp->hard_acc.x * kp->hard_acc.x + kp->hard_acc.y * kp->hard_acc.y ) ; in calc_acc_vertical()
695 ay = - kp->hard_acc.z ; in calc_acc_vertical()
732 static void read_kpad_acc( KPADInsideStatus *kp, void *vp, u32 dev_type, s32 chan ) in read_kpad_acc() argument
734 KPADStatus *sp = &kp->status ; in read_kpad_acc()
771 if ( kp->wpad_chan_no < 0 ) return ; in read_kpad_acc()
780 kp->wpad_chan_no -= WPAD_MAX_CONTROLLERS ; in read_kpad_acc()
781 reset_kpad( kp ) ; in read_kpad_acc()
786 kp->hard_acc.x = clamp_acc( (f32)(s32)-fp->accX * acc_scale_x, kp_rm_acc_max ) ; in read_kpad_acc()
787 kp->hard_acc.y = clamp_acc( (f32)(s32)-fp->accZ * acc_scale_z, kp_rm_acc_max ) ; in read_kpad_acc()
788 kp->hard_acc.z = clamp_acc( (f32)(s32) fp->accY * acc_scale_y, kp_rm_acc_max ) ; in read_kpad_acc()
796 kp->wpad_chan_no -= WPAD_MAX_CONTROLLERS ; in read_kpad_acc()
797 reset_kpad( kp ) ; in read_kpad_acc()
802 kp->hard_acc.x = clamp_acc( (f32)(s32)-wp->accX * acc_scale_x, kp_rm_acc_max ) ; in read_kpad_acc()
803 kp->hard_acc.y = clamp_acc( (f32)(s32)-wp->accZ * acc_scale_z, kp_rm_acc_max ) ; in read_kpad_acc()
804 kp->hard_acc.z = clamp_acc( (f32)(s32) wp->accY * acc_scale_y, kp_rm_acc_max ) ; in read_kpad_acc()
812 calc_acc( kp, &sp->acc.x, kp->hard_acc.x ) ; in read_kpad_acc()
813 calc_acc( kp, &sp->acc.y, kp->hard_acc.y ) ; in read_kpad_acc()
814 calc_acc( kp, &sp->acc.z, kp->hard_acc.z ) ; in read_kpad_acc()
824 calc_acc_horizon( kp ) ; in read_kpad_acc()
825 calc_acc_vertical( kp ) ; in read_kpad_acc()
837 …calc_acc( kp, &sp->ex_status.fs.acc.x, clamp_acc( (f32)(s32)-fp->fsAccX * fs_acc_scale_x, kp_fs_ac… in read_kpad_acc()
838 …calc_acc( kp, &sp->ex_status.fs.acc.y, clamp_acc( (f32)(s32)-fp->fsAccZ * fs_acc_scale_z, kp_fs_ac… in read_kpad_acc()
839 …calc_acc( kp, &sp->ex_status.fs.acc.z, clamp_acc( (f32)(s32) fp->fsAccY * fs_acc_scale_y, kp_fs_ac… in read_kpad_acc()
853 static void get_kobj( KPADInsideStatus *kp, void *vp, u32 dev_type ) in get_kobj() argument
871 kobj_p = &kp->kobj_sample[ WPAD_DPD_MAX_OBJECTS - 1 ] ; in get_kobj()
886 } while ( --kobj_p >= kp->kobj_sample ) ; in get_kobj()
935 static f32 calc_horizon( KPADInsideStatus *kp, Vec2 *p1, Vec2 *p2, Vec2 *hori ) in calc_horizon() argument
946 hori->x = kp->sec_nrm_hori.x * vx + kp->sec_nrm_hori.y * vy ; in calc_horizon()
947 hori->y = kp->sec_nrm_hori.y * vx - kp->sec_nrm_hori.x * vy ; in calc_horizon()
956 static s8 select_2obj_first( KPADInsideStatus *kp ) in select_2obj_first() argument
962 op1 = kp->kobj_sample ; in select_2obj_first()
970 f1 = calc_horizon( kp, &op1->center, &op2->center, &hori ) ; in select_2obj_first()
975 f1 = kp->acc_horizon.x * hori.x + kp->acc_horizon.y * hori.y ; in select_2obj_first()
990 } while ( ++op2 <= &kp->kobj_sample[ WPAD_DPD_MAX_OBJECTS - 1 ] ) ; in select_2obj_first()
991 } while ( ++op1 < &kp->kobj_sample[ WPAD_DPD_MAX_OBJECTS - 1 ] ) ; in select_2obj_first()
996 kp->kobj_regular[0] = *rp1 ; in select_2obj_first()
997 kp->kobj_regular[1] = *rp2 ; in select_2obj_first()
1006 static s8 select_2obj_continue( KPADInsideStatus *kp ) in select_2obj_continue() argument
1015 op1 = kp->kobj_sample ; in select_2obj_continue()
1035 f1 -= kp->sec_dist ; in select_2obj_continue()
1044 f2 = kp->sec_nrm.x * nrm.x + kp->sec_nrm.y * nrm.y ; in select_2obj_continue()
1067 } while ( ++op2 <= &kp->kobj_sample[ WPAD_DPD_MAX_OBJECTS - 1 ] ) ; in select_2obj_continue()
1068 } while ( ++op1 < &kp->kobj_sample[ WPAD_DPD_MAX_OBJECTS - 1 ] ) ; in select_2obj_continue()
1073 kp->kobj_regular[0] = *rp1 ; in select_2obj_continue()
1074 kp->kobj_regular[1] = *rp2 ; in select_2obj_continue()
1083 static s8 select_1obj_first( KPADInsideStatus *kp ) in select_1obj_first() argument
1091 vx = kp->sec_nrm_hori.x * kp->acc_horizon.x + kp->sec_nrm_hori.y * kp->acc_horizon.y ; in select_1obj_first()
1092 vy = kp->sec_nrm_hori.y * kp->acc_horizon.x - kp->sec_nrm_hori.x * kp->acc_horizon.y ; in select_1obj_first()
1095 vx *= kp->trust_sec_length ; in select_1obj_first()
1096 vy *= kp->trust_sec_length ; in select_1obj_first()
1099 op1 = kp->kobj_sample ; in select_1obj_first()
1114 kp->kobj_regular[1] = *op1 ; in select_1obj_first()
1116 kp->kobj_regular[0].center = p1 ; in select_1obj_first()
1117 kp->kobj_regular[0].error_fg = 0 ; in select_1obj_first()
1118 kp->kobj_regular[0].state_fg = -1 ; in select_1obj_first()
1127 kp->kobj_regular[0] = *op1 ; in select_1obj_first()
1129 kp->kobj_regular[1].center = p2 ; in select_1obj_first()
1130 kp->kobj_regular[1].error_fg = 0 ; in select_1obj_first()
1131 kp->kobj_regular[1].state_fg = -1 ; in select_1obj_first()
1137 } while ( ++op1 < &kp->kobj_sample[ WPAD_DPD_MAX_OBJECTS ] ) ; in select_1obj_first()
1146 static s8 select_1obj_continue( KPADInsideStatus *kp ) in select_1obj_continue() argument
1154 op1 = kp->kobj_regular ; in select_1obj_continue()
1159 op2 = kp->kobj_sample ; in select_1obj_continue()
1171 } while ( ++op2 < &kp->kobj_sample[ WPAD_DPD_MAX_OBJECTS ] ) ; in select_1obj_continue()
1172 } while ( ++op1 < &kp->kobj_regular[ KPAD_USE_OBJECTS ] ) ; in select_1obj_continue()
1180 … kp->sec_nrm.x = kp->sec_nrm_hori.x * kp->acc_horizon.x + kp->sec_nrm_hori.y * kp->acc_horizon.y ; in select_1obj_continue()
1181 … kp->sec_nrm.y = kp->sec_nrm_hori.y * kp->acc_horizon.x - kp->sec_nrm_hori.x * kp->acc_horizon.y ; in select_1obj_continue()
1184 vx = kp->sec_length * kp->sec_nrm.x ; in select_1obj_continue()
1185 vy = kp->sec_length * kp->sec_nrm.y ; in select_1obj_continue()
1186 if ( rp1 == &kp->kobj_regular[0] ) { in select_1obj_continue()
1187 kp->kobj_regular[1].center.x = rp1->center.x + vx ; in select_1obj_continue()
1188 kp->kobj_regular[1].center.y = rp1->center.y + vy ; in select_1obj_continue()
1189 kp->kobj_regular[1].error_fg = 0 ; in select_1obj_continue()
1190 kp->kobj_regular[1].state_fg = -1 ; in select_1obj_continue()
1192 kp->kobj_regular[0].center.x = rp1->center.x - vx ; in select_1obj_continue()
1193 kp->kobj_regular[0].center.y = rp1->center.y - vy ; in select_1obj_continue()
1194 kp->kobj_regular[0].error_fg = 0 ; in select_1obj_continue()
1195 kp->kobj_regular[0].state_fg = -1 ; in select_1obj_continue()
1198 if ( kp->status.dpd_valid_fg < 0 ) { in select_1obj_continue()
1209 static void calc_obj_horizon( KPADInsideStatus *kp ) in calc_obj_horizon() argument
1214 vx = kp->kobj_regular[1].center.x - kp->kobj_regular[0].center.x ; in calc_obj_horizon()
1215 vy = kp->kobj_regular[1].center.y - kp->kobj_regular[0].center.y ; in calc_obj_horizon()
1216 kp->sec_length = sqrtf( vx * vx + vy * vy ) ; // Should not become zero in calc_obj_horizon()
1218 f1 = 1.0f / kp->sec_length ; in calc_obj_horizon()
1219 kp->sec_dist = kp_dist_vv1 * f1 ; in calc_obj_horizon()
1221 kp->sec_nrm.x = ( vx *= f1 ) ; in calc_obj_horizon()
1222 kp->sec_nrm.y = ( vy *= f1 ) ; in calc_obj_horizon()
1224 kp->obj_horizon.x = kp->sec_nrm_hori.x * vx + kp->sec_nrm_hori.y * vy ; in calc_obj_horizon()
1225 kp->obj_horizon.y = kp->sec_nrm_hori.y * vx - kp->sec_nrm_hori.x * vy ; in calc_obj_horizon()
1232 static void calc_dpd_variable( KPADInsideStatus *kp, s8 valid_fg_next ) in calc_dpd_variable() argument
1234 KPADStatus *sp = &kp->status ; in calc_dpd_variable()
1248 pos.x = kp->sec_nrm_hori.x * kp->sec_nrm.x + kp->sec_nrm_hori.y * kp->sec_nrm.y ; in calc_dpd_variable()
1249 pos.y = kp->sec_nrm_hori.y * kp->sec_nrm.x - kp->sec_nrm_hori.x * kp->sec_nrm.y ; in calc_dpd_variable()
1264 if ( f1 >= kp->hori_play_radius ) { in calc_dpd_variable()
1269 f1 /= kp->hori_play_radius ; in calc_dpd_variable()
1273 f1 *= kp->hori_sensitivity ; in calc_dpd_variable()
1293 dist = kp_dist_vv1 / kp->sec_length ; in calc_dpd_variable()
1311 if ( f1 >= kp->dist_play_radius ) { in calc_dpd_variable()
1316 f1 /= kp->dist_play_radius ; in calc_dpd_variable()
1320 f1 *= kp->dist_sensitivity ; in calc_dpd_variable()
1337 pos.x = ( kp->kobj_regular[0].center.x + kp->kobj_regular[1].center.x ) * 0.5f ; in calc_dpd_variable()
1338 pos.y = ( kp->kobj_regular[0].center.y + kp->kobj_regular[1].center.y ) * 0.5f ; in calc_dpd_variable()
1341 f1 = kp->sec_nrm.x * kp->sec_nrm_hori.x + kp->sec_nrm.y * kp->sec_nrm_hori.y ; in calc_dpd_variable()
1342 f2 = -kp->sec_nrm.y * kp->sec_nrm_hori.x + kp->sec_nrm.x * kp->sec_nrm_hori.y ; in calc_dpd_variable()
1347 vec.x = ( kp->center_org.x - vec.x ) * kp->dpd2pos_scale ; in calc_dpd_variable()
1348 vec.y = ( kp->center_org.y - vec.y ) * kp->dpd2pos_scale ; in calc_dpd_variable()
1351 pos.x = -kp->accXY_nrm_hori.y * vec.x + kp->accXY_nrm_hori.x * vec.y ; in calc_dpd_variable()
1352 pos.y = -kp->accXY_nrm_hori.x * vec.x - kp->accXY_nrm_hori.y * vec.y ; in calc_dpd_variable()
1367 if ( f1 >= kp->pos_play_radius ) { in calc_dpd_variable()
1372 f1 /= kp->pos_play_radius ; in calc_dpd_variable()
1376 f1 *= kp->pos_sensitivity ; in calc_dpd_variable()
1397 static void read_kpad_dpd( KPADInsideStatus *kp, void *vp, u32 dev_type ) in read_kpad_dpd() argument
1399 KPADStatus *sp = &kp->status ; in read_kpad_dpd()
1407 if ( kp->wpad_chan_no < 0 ) return ; in read_kpad_dpd()
1418 kp->wpad_chan_no -= WPAD_MAX_CONTROLLERS ; in read_kpad_dpd()
1419 reset_kpad( kp ) ; in read_kpad_dpd()
1425 get_kobj( kp, fp, WPAD_DEV_FREESTYLE ) ; in read_kpad_dpd()
1433 kp->wpad_chan_no -= WPAD_MAX_CONTROLLERS ; in read_kpad_dpd()
1434 reset_kpad( kp ) ; in read_kpad_dpd()
1440 get_kobj( kp, cp, WPAD_DEV_CLASSIC ) ; in read_kpad_dpd()
1449 kp->wpad_chan_no -= WPAD_MAX_CONTROLLERS ; in read_kpad_dpd()
1450 reset_kpad( kp ) ; in read_kpad_dpd()
1456 get_kobj( kp, wp, WPAD_DEV_CORE ) ; in read_kpad_dpd()
1464 check_kobj_outside_frame( kp->kobj_sample ) ; // Invalidate object outside frame in read_kpad_dpd()
1465 check_kobj_same_position( kp->kobj_sample ) ; // Invalidate objects with same coordinates in read_kpad_dpd()
1468 kp->valid_objs = 0 ; in read_kpad_dpd()
1469 op1 = &kp->kobj_sample[ WPAD_DPD_MAX_OBJECTS - 1 ] ; in read_kpad_dpd()
1471 if ( op1->error_fg == 0 ) ++ kp->valid_objs ; in read_kpad_dpd()
1472 } while ( --op1 >= kp->kobj_sample ) ; in read_kpad_dpd()
1479 if ( kp->valid_objs >= 2 ) in read_kpad_dpd()
1481 valid_fg_next = select_2obj_continue( kp ); in read_kpad_dpd()
1484 if ( kp->valid_objs >= 1 ) in read_kpad_dpd()
1486 valid_fg_next = select_1obj_continue( kp ); in read_kpad_dpd()
1491 if ( kp->valid_objs >= 2 ) in read_kpad_dpd()
1493 valid_fg_next = select_2obj_first( kp ); in read_kpad_dpd()
1496 if ( kp->valid_objs >= 1 ) in read_kpad_dpd()
1498 valid_fg_next = select_1obj_continue( kp ); in read_kpad_dpd()
1503 if ( kp->valid_objs >= 2 ) in read_kpad_dpd()
1505 valid_fg_next = select_2obj_first( kp ); in read_kpad_dpd()
1509 if ( kp->valid_objs == 1 ) in read_kpad_dpd()
1511 valid_fg_next = select_1obj_first( kp ); in read_kpad_dpd()
1525 calc_obj_horizon( kp ) ; in read_kpad_dpd()
1528 if ( kp->ah_circle_ct == 0 ) { in read_kpad_dpd()
1529 …if ( kp->obj_horizon.x * kp->acc_horizon.x + kp->obj_horizon.y * kp->acc_horizon.y <= kp_err_acc_i… in read_kpad_dpd()
1532 kp->kobj_regular[0].error_fg = in read_kpad_dpd()
1533 kp->kobj_regular[1].error_fg = 1 ; in read_kpad_dpd()
1539 if ( kp->dpd_valid2_ct == 200 ) { in read_kpad_dpd()
1540 kp->trust_sec_length = kp->sec_length ; in read_kpad_dpd()
1542 ++ kp->dpd_valid2_ct ; in read_kpad_dpd()
1545 kp->dpd_valid2_ct = 0 ; in read_kpad_dpd()
1548 kp->dpd_valid2_ct = 0 ; in read_kpad_dpd()
1552 calc_dpd_variable( kp, valid_fg_next ) ; in read_kpad_dpd()
1636 static void read_kpad_stick( KPADInsideStatus *kp, void *vp ) in read_kpad_stick() argument
1638 KPADStatus *sp = &kp->status ; in read_kpad_stick()
1643 if ( kp->wpad_chan_no < 0 ) return ; in read_kpad_stick()
1651 kp->wpad_chan_no -= WPAD_MAX_CONTROLLERS ; in read_kpad_stick()
1652 reset_kpad( kp ) ; in read_kpad_stick()
1665 kp->wpad_chan_no -= WPAD_MAX_CONTROLLERS ; in read_kpad_stick()
1666 reset_kpad( kp ) ; in read_kpad_stick()
1684 static s32 check_device( s32 chan, KPADInsideStatus *kp ) in check_device() argument
1695 if ( kp->wpad_chan_no >= 0 ) { in check_device()
1698 kp->wpad_chan_no = (s16)( chan - WPAD_MAX_CONTROLLERS ) ; in check_device()
1699 kp->status.dev_type = WPAD_DEV_UNKNOWN ; in check_device()
1706 } else if ( type == kp->status.dev_type ) { in check_device()
1722 WPADSetAutoSamplingBuf( chan, kp->wpad_ring_bf, KPAD_RING_BUFS ) ; in check_device()
1727 WPADSetAutoSamplingBuf( chan, kp->wpad_ring_bf, KPAD_RING_BUFS ) ; in check_device()
1732 WPADSetAutoSamplingBuf( chan, kp->wpad_ring_bf, KPAD_RING_BUFS ) ; in check_device()
1740 kp->wpad_chan_no = (s16)( chan - WPAD_MAX_CONTROLLERS ) ; in check_device()
1745 kp->wpad_chan_no = (s16)chan ; in check_device()
1746 kp->status.dev_type = type ; in check_device()
1747 reset_kpad( kp ) ; in check_device()
1758 KPADInsideStatus *kp = &inside_kpads[ chan ] ; in KPADRead() local
1773 sp->dev_type = kp->status.dev_type ; in KPADRead()
1779 if ( check_device( chan, kp ) ) { in KPADRead()
1787 if ( kp->status.dev_type != WPAD_DEV_CORE && in KPADRead()
1788 kp->status.dev_type != WPAD_DEV_FREESTYLE && in KPADRead()
1789 kp->status.dev_type != WPAD_DEV_CLASSIC) { in KPADRead()
1799 if( kp->wpad_chan_no >= 0 ) { in KPADRead()
1800 idx_now = (s32)WPADGetLatestIndexInBuf( kp->wpad_chan_no ) ; in KPADRead()
1802 idx_now = (s32)WPADGetLatestIndexInBuf( kp->wpad_chan_no + WPAD_MAX_CONTROLLERS ) ; in KPADRead()
1805 idx_old = kp->wpad_ring_idx ; in KPADRead()
1810 kp->wpad_ring_idx = (s16)idx_now ; in KPADRead()
1831 kp->work_ct = 0 ; in KPADRead()
1833 if ( kp->status.dev_type == WPAD_DEV_CORE ) { in KPADRead()
1837 wp = &((WPADStatus*)kp->wpad_ring_bf)[ idx ] ; in KPADRead()
1840 kp->status.wpad_err = wp->err ; in KPADRead()
1843 read_kpad_acc( kp, wp, WPAD_DEV_CORE, chan ) ; in KPADRead()
1844 read_kpad_dpd( kp, wp, WPAD_DEV_CORE ) ; in KPADRead()
1847 if ( kp->work_ct >= sample_ct - copy_ct ) { in KPADRead()
1849 *sp = kp->status ; // Actually, button data is copied unnecessarily in KPADRead()
1851 } while ( ++ kp->work_ct < sample_ct ) ; in KPADRead()
1852 } else if ( kp->status.dev_type == WPAD_DEV_FREESTYLE) { in KPADRead()
1856 fp = &((WPADFSStatus*)kp->wpad_ring_bf)[ idx ] ; in KPADRead()
1859 kp->status.wpad_err = fp->err ; in KPADRead()
1862 read_kpad_acc( kp, fp, WPAD_DEV_FREESTYLE, chan ) ; in KPADRead()
1863 read_kpad_dpd( kp, fp, WPAD_DEV_FREESTYLE ) ; in KPADRead()
1864 read_kpad_stick( kp, fp ) ; in KPADRead()
1867 if ( kp->work_ct >= sample_ct - copy_ct ) { in KPADRead()
1869 *sp = kp->status ; // Actually, button data is copied unnecessarily in KPADRead()
1871 } while ( ++ kp->work_ct < sample_ct ) ; in KPADRead()
1872 } else if ( kp->status.dev_type == WPAD_DEV_CLASSIC ) { in KPADRead()
1876 cp = &((WPADCLStatus*)kp->wpad_ring_bf)[ idx ] ; in KPADRead()
1879 kp->status.wpad_err = cp->err ; in KPADRead()
1882 read_kpad_acc( kp, cp, WPAD_DEV_CLASSIC, chan ) ; in KPADRead()
1883 read_kpad_dpd( kp, cp, WPAD_DEV_CLASSIC ) ; in KPADRead()
1884 read_kpad_stick( kp, cp ) ; in KPADRead()
1887 if ( kp->work_ct >= sample_ct - copy_ct ) { in KPADRead()
1889 *sp = kp->status ; // Actually, button data is copied unnecessarily in KPADRead()
1891 } while ( ++ kp->work_ct < sample_ct ) ; in KPADRead()
1899 if ( kp->status.dev_type == WPAD_DEV_CORE ) { in KPADRead()
1900 read_kpad_button( kp, wp, WPAD_DEV_CORE ) ; in KPADRead()
1901 } else if ( kp->status.dev_type == WPAD_DEV_FREESTYLE ) { in KPADRead()
1902 read_kpad_button( kp, fp, WPAD_DEV_FREESTYLE ) ; in KPADRead()
1903 } else if ( kp->status.dev_type == WPAD_DEV_CLASSIC ) { in KPADRead()
1904 read_kpad_button( kp, cp, WPAD_DEV_CLASSIC ) ; in KPADRead()
1910 sp->hold = kp->status.hold ; in KPADRead()
1911 sp->trig = kp->status.trig ; in KPADRead()
1912 sp->release = kp->status.release ; in KPADRead()
1915 if ( kp->status.dev_type == WPAD_DEV_CLASSIC ) { in KPADRead()
1916 sp->ex_status.cl.hold = kp->status.ex_status.cl.hold; in KPADRead()
1917 sp->ex_status.cl.trig = kp->status.ex_status.cl.trig; in KPADRead()
1918 sp->ex_status.cl.release = kp->status.ex_status.cl.release; in KPADRead()
1932 KPADInsideStatus *kp ; in KPADInit() local
1942 kp = &inside_kpads[i] ; in KPADInit()
1945 kp->status.dev_type = WPAD_DEV_UNKNOWN ; in KPADInit()
1946 kp->wpad_chan_no = (s16)( i - WPAD_MAX_CONTROLLERS ) ; in KPADInit()
1947 (void)check_device( i, kp ) ; in KPADInit()
1950 kp->dist_org = idist_org ; in KPADInit()
1951 kp->accXY_nrm_hori = iaccXY_nrm_hori ; in KPADInit()
1952 kp->sec_nrm_hori = isec_nrm_hori ; in KPADInit()
1953 kp->center_org = icenter_org ; in KPADInit()
1954 calc_dpd2pos_scale( kp ) ; in KPADInit()
1957 kp->pos_play_radius = in KPADInit()
1958 kp->hori_play_radius = in KPADInit()
1959 kp->dist_play_radius = in KPADInit()
1960 kp->acc_play_radius = 0.0f ; in KPADInit()
1962 kp->pos_sensitivity = in KPADInit()
1963 kp->hori_sensitivity = in KPADInit()
1964 kp->dist_sensitivity = in KPADInit()
1965 kp->acc_sensitivity = 1.0f ; in KPADInit()
1968 kp->btn_repeat_delay = KPAD_BTN_NO_RPT_DELAY ; in KPADInit()
1969 kp->btn_repeat_pulse = 0 ; in KPADInit()
1971 kp->btn_cl_repeat_delay = KPAD_BTN_NO_RPT_DELAY ; in KPADInit()
1972 kp->btn_cl_repeat_pulse = 0 ; in KPADInit()
1987 KPADInsideStatus *kp ; in KPADReset() local
2004 kp = &inside_kpads[ WPAD_MAX_CONTROLLERS - 1 ] ; in KPADReset()
2006 reset_kpad( kp ) ; in KPADReset()
2007 } while ( --kp >= inside_kpads ) ; in KPADReset()