381
393
#if defined(__FREEBSD__) || SDL_JOYSTICK_USBHID_MACHINE_JOYSTICK_H
382
394
struct joystick gameport;
383
static int x, y, xmin = 0xffff, ymin = 0xffff, xmax = 0, ymax = 0;
385
396
if (joy->hwdata->type == BSDJOY_JOY) {
386
397
if (read(joy->hwdata->fd, &gameport, sizeof gameport) != sizeof gameport)
388
if (abs(x - gameport.x) > 8) {
401
v -= (xmax + xmin + 1)/2;
402
v *= 32768/((xmax - xmin + 1)/2);
399
if (abs(joy->hwdata->x - gameport.x) > 8) {
400
joy->hwdata->x = gameport.x;
401
if (joy->hwdata->x < joy->hwdata->xmin) {
402
joy->hwdata->xmin = joy->hwdata->x;
404
if (joy->hwdata->x > joy->hwdata->xmax) {
405
joy->hwdata->xmax = joy->hwdata->x;
407
if (joy->hwdata->xmin == joy->hwdata->xmax) {
411
v = (Sint32)joy->hwdata->x;
412
v -= (joy->hwdata->xmax + joy->hwdata->xmin + 1)/2;
413
v *= 32768/((joy->hwdata->xmax - joy->hwdata->xmin + 1)/2);
403
414
SDL_PrivateJoystickAxis(joy, 0, v);
405
if (abs(y - gameport.y) > 8) {
418
v -= (ymax + ymin + 1)/2;
419
v *= 32768/((ymax - ymin + 1)/2);
416
if (abs(joy->hwdata->y - gameport.y) > 8) {
417
joy->hwdata->y = gameport.y;
418
if (joy->hwdata->y < joy->hwdata->ymin) {
419
joy->hwdata->ymin = joy->hwdata->y;
421
if (joy->hwdata->y > joy->hwdata->ymax) {
422
joy->hwdata->ymax = joy->hwdata->y;
424
if (joy->hwdata->ymin == joy->hwdata->ymax) {
428
v = (Sint32)joy->hwdata->y;
429
v -= (joy->hwdata->ymax + joy->hwdata->ymin + 1)/2;
430
v *= 32768/((joy->hwdata->ymax - joy->hwdata->ymin + 1)/2);
420
431
SDL_PrivateJoystickAxis(joy, 1, v);
422
433
if (gameport.b1 != joy->buttons[0]) {