Esempio n. 1
0
void input_init(void)
{
  int i, padtype;
  int player = 0;

  for (i=0; i<MAX_DEVICES; i++)
  {
    input.dev[i] = NO_DEVICE;
    input.pad[i] = 0;
  }

  /* PICO tablet */
  if (system_hw == SYSTEM_PICO)
  {
    input.dev[0] = DEVICE_PICO;
    return;
  }

  /* Terebi Oekaki tablet */
  if (cart.special & HW_TEREBI_OEKAKI)
  {
    input.dev[0] = DEVICE_TEREBI;
    return;
  }

  /* default gamepad type */
  if (romtype & SYSTEM_MD)
  {
    /* 3-buttons or 6-buttons */
    padtype = (rominfo.peripherals & 2) ? DEVICE_PAD6B : DEVICE_PAD3B;
  }
  else
  {
    /* 2-buttons */
    padtype = DEVICE_PAD2B;
  }

  switch (input.system[0])
  {
#ifdef GCWZERO
    case SYSTEM_MENACER:
    {
      input.dev[4] = DEVICE_LIGHTGUN;
      player++;
      break;
    }

    case SYSTEM_JUSTIFIER:
    {
      for (i=4; i<6; i++)
      {
        if (player < MAX_INPUTS)
        {
          input.dev[4] = DEVICE_LIGHTGUN;
          player++;
        }
      }
      break;
    }
    case SYSTEM_LIGHTPHASER:
    {
      input.dev[0] = DEVICE_LIGHTGUN;
      player++;
      break;
    }
#endif
    case SYSTEM_GAMEPAD:
    {
      /* 2-buttons, 3-buttons or 6-buttons control pad */
      if (config.input[player].padtype != (DEVICE_PAD2B | DEVICE_PAD3B | DEVICE_PAD6B))
      {
        input.dev[0] = config.input[player].padtype;
      }
      else
      {
        input.dev[0] = padtype;
      }
      player++;
      break;
    }

    case SYSTEM_MOUSE:
    {
      input.dev[0] = DEVICE_MOUSE;
      player++;
      break;
    }

    case SYSTEM_ACTIVATOR:
    {
      input.dev[0] = DEVICE_ACTIVATOR;
      player++;
      break;
    }
#ifndef GCWZERO
    case SYSTEM_XE_1AP:
    {
      input.dev[0] = DEVICE_XE_1AP;
      player++;
      break;
    }

    case SYSTEM_WAYPLAY:
    {
      for (i=0; i< 4; i++)
      {
        if (player < MAX_INPUTS)
        {
          /* only allow 3-buttons or 6-buttons control pad */
          if (config.input[player].padtype != (DEVICE_PAD2B | DEVICE_PAD3B | DEVICE_PAD6B))
          {
            input.dev[i] = config.input[player].padtype & DEVICE_PAD6B;
          }
          else
          {
            input.dev[i] = padtype & DEVICE_PAD6B;
          }
          player++;
        }
      }
      break;
    }

    case SYSTEM_TEAMPLAYER:
    {
      for (i=0; i<4; i++)
      {
        if (player < MAX_INPUTS)
        {
          /* only allow 3-buttons or 6-buttons control pad */
          if (config.input[player].padtype != (DEVICE_PAD2B | DEVICE_PAD3B | DEVICE_PAD6B))
          {
            input.dev[i] = config.input[player].padtype & DEVICE_PAD6B;
          }
          else
          {
            input.dev[i] = padtype & DEVICE_PAD6B;
          }
          player++;
        }
      }
      teamplayer_init(0);
      break;
    }

    case SYSTEM_MASTERTAP:
    {
      for (i=0; i<4; i++)
      {
        if (player < MAX_INPUTS)
        {
          input.dev[i] = DEVICE_PAD2B;
          player++;
        }
      }
      break;
    }

    case SYSTEM_LIGHTPHASER:
    {
      input.dev[0] = DEVICE_LIGHTGUN;
      player++;
      break;
    }
    case SYSTEM_PADDLE:
    {
      input.dev[0] = DEVICE_PADDLE;
      player++;
      break;
    }

    case SYSTEM_SPORTSPAD:
    {
      input.dev[0] = DEVICE_SPORTSPAD;
      player++;
      break;
    }

    case SYSTEM_GRAPHIC_BOARD:
    {
      input.dev[0] = DEVICE_GRAPHIC_BOARD;
      player++;
      break;
    }
#endif
  }

  if (player == MAX_INPUTS)
  {
    return;
  }

  switch (input.system[1])
  {
    case SYSTEM_GAMEPAD:
    {
      if (config.input[player].padtype != (DEVICE_PAD2B | DEVICE_PAD3B | DEVICE_PAD6B))
      {
        input.dev[4] = config.input[player].padtype;
      }
      else
      {
        input.dev[4] = padtype;
      }
      player++;
      break;
    }

    case SYSTEM_MOUSE:
    {
      input.dev[4] = DEVICE_MOUSE;
      player++;
      break;
    }

    case SYSTEM_ACTIVATOR:
    {
      input.dev[4] = DEVICE_ACTIVATOR;
      player++;
      break;
    }

    case SYSTEM_XE_1AP:
    {
      input.dev[4] = DEVICE_XE_1AP;
      player++;
      break;
    }

    case SYSTEM_MENACER:
    {
      input.dev[4] = DEVICE_LIGHTGUN;
      player++;
      break;
    }

    case SYSTEM_JUSTIFIER:
    {
      for (i=4; i<6; i++)
      {
        if (player < MAX_INPUTS)
        {
#ifdef GCWZERO
          input.dev[4] = DEVICE_LIGHTGUN;
#else
          input.dev[i] = DEVICE_LIGHTGUN;
#endif
          player++;
        }
      }
      break;
    }

#ifndef GCWZERO
    case SYSTEM_TEAMPLAYER:
    {
      for (i=4; i<8; i++)
      {
        if (player < MAX_INPUTS)
        {
          /* only allow 3-buttons or 6-buttons control pad */
          if (config.input[player].padtype != (DEVICE_PAD2B | DEVICE_PAD3B | DEVICE_PAD6B))
          {
            input.dev[i] = config.input[player].padtype & DEVICE_PAD6B;
          }
          else
          {
            input.dev[i] = padtype & DEVICE_PAD6B;
          }
          player++;
        }
      }
      teamplayer_init(1);
      break;
    }

    case SYSTEM_MASTERTAP:
    {
      for (i=4; i<8; i++)
      {
        if (player < MAX_INPUTS)
        {
          input.dev[i] = DEVICE_PAD2B;
          player++;
        }
      }
      break;
    }
#endif

    case SYSTEM_LIGHTPHASER:
    {
      input.dev[4] = DEVICE_LIGHTGUN;
      player++;
      break;
    }

#ifndef GCWZERO
    case SYSTEM_PADDLE:
    {
      input.dev[4] = DEVICE_PADDLE;
      player++;
      break;
    }

    case SYSTEM_SPORTSPAD:
    {
      input.dev[4] = DEVICE_SPORTSPAD;
      player++;
      break;
    }

    case SYSTEM_GRAPHIC_BOARD:
    {
      input.dev[4] = DEVICE_GRAPHIC_BOARD;
      player++;
      break;
    }
#endif
  }

  /* J-CART */
  if (cart.special & HW_J_CART)
  {
    /* two additional gamepads */
    for (i=5; i<7; i++)
    {
      if (player < MAX_INPUTS)
      {
        /* only allow 3-buttons or 6-buttons control pad */
        if (config.input[player].padtype != (DEVICE_PAD2B | DEVICE_PAD3B | DEVICE_PAD6B))
        {
          input.dev[i] = config.input[player].padtype & DEVICE_PAD6B;
        }
        else
        {
          input.dev[i] = padtype & DEVICE_PAD6B;
        }
        player ++;
      }
    }
  }
}
Esempio n. 2
0
void input_init(void)
{
  int i;
  int player = 0;

  for (i=0; i<MAX_DEVICES; i++)
  {
    input.dev[i] = NO_DEVICE;
    input.pad[i] = 0;
  }

  /* PICO tablet & pen */
  if (system_hw == SYSTEM_PICO)
  {
    input.dev[0] = DEVICE_TABLET;
    return;
  }

  switch (input.system[0])
  {
    case SYSTEM_MS_GAMEPAD:
    {
      if (player == MAX_INPUTS) return;
      input.dev[0] = DEVICE_PAD2B;
      player++;
      break;
    }

    case SYSTEM_MD_GAMEPAD:
    {
      if (player == MAX_INPUTS) return;
      input.dev[0] = config.input[player].padtype;
      player++;
      break;
    }

    case SYSTEM_MOUSE:
    {
      if (player == MAX_INPUTS) return;
      input.dev[0] = DEVICE_MOUSE;
      player++;
      break;
    }

    case SYSTEM_ACTIVATOR:
    {
      if (player == MAX_INPUTS) return;
      input.dev[0] = DEVICE_ACTIVATOR;
      player++;
      break;
    }

    case SYSTEM_XE_A1P:
    {
      if (player == MAX_INPUTS) return;
      input.dev[0] = DEVICE_XE_A1P;
      player++;
      break;
    }

    case SYSTEM_WAYPLAY:
    {
      for (i=0; i< 4; i++)
      {
        if (player == MAX_INPUTS) return;
        input.dev[i] = config.input[player].padtype;
        player++;
      }
      break;
    }

    case SYSTEM_TEAMPLAYER:
    {
      for (i=0; i<4; i++)
      {
        if (player == MAX_INPUTS) return;
        input.dev[i] = config.input[player].padtype;
        player++;
      }
      teamplayer_init(0);
      break;
    }

    case SYSTEM_LIGHTPHASER:
    {
      if (player == MAX_INPUTS) return;
      input.dev[0] = DEVICE_LIGHTGUN;
      player++;
      break;
    }

    case SYSTEM_PADDLE:
    {
      if (player == MAX_INPUTS) return;
      input.dev[0] = DEVICE_PADDLE;
      player++;
      break;
    }

    case SYSTEM_SPORTSPAD:
    {
      if (player == MAX_INPUTS) return;
      input.dev[0] = DEVICE_SPORTSPAD;
      player++;
      break;
    }
  }

  switch (input.system[1])
  {
    case SYSTEM_MS_GAMEPAD:
    {
      if (player == MAX_INPUTS) return;
      input.dev[4] = DEVICE_PAD2B;
      player++;
      break;
    }

    case SYSTEM_MD_GAMEPAD:
    {
      if (player == MAX_INPUTS) return;
      input.dev[1] = config.input[player].padtype;
      player++;
      break;
    }

    case SYSTEM_MOUSE:
    {
      if (player == MAX_INPUTS) return;
      input.dev[4] = DEVICE_MOUSE;
      player++;
      break;
    }

    case SYSTEM_ACTIVATOR:
    {
      if (player == MAX_INPUTS) return;
      input.dev[4] = DEVICE_ACTIVATOR;
      player++;
      break;
    }

    case SYSTEM_MENACER:
    {
      if (player == MAX_INPUTS) return;
      input.dev[4] = DEVICE_LIGHTGUN;
      player++;
      break;
    }

    case SYSTEM_JUSTIFIER:
    {
      for (i=4; i<6; i++)
      {
        if (player == MAX_INPUTS) return;
        input.dev[i] = DEVICE_LIGHTGUN;
        player++;
      }
      break;
    }

    case SYSTEM_TEAMPLAYER:
    {
      for (i=4; i<8; i++)
      {
        if (player == MAX_INPUTS) return;
        input.dev[i] = config.input[player].padtype;
        player++;
      }
      teamplayer_init(1);
      break;
    }

    case SYSTEM_LIGHTPHASER:
    {
      if (player == MAX_INPUTS) return;
      input.dev[4] = DEVICE_LIGHTGUN;
      player++;
      break;
    }

    case SYSTEM_PADDLE:
    {
      if (player == MAX_INPUTS) return;
      input.dev[4] = DEVICE_PADDLE;
      player++;
      break;
    }

    case SYSTEM_SPORTSPAD:
    {
      if (player == MAX_INPUTS) return;
      input.dev[4] = DEVICE_SPORTSPAD;
      player++;
      break;
    }
  }

  /* J-CART */
  if (cart.special & HW_J_CART)
  {
    /* two additional gamepads */
    for (i=5; i<7; i++)
    {
      if (player == MAX_INPUTS) return;
      input.dev[i] = config.input[player].padtype;
      player ++;
    }
  }
}