示例#1
0
static void wpad_config(u8 num)
{
  int i,j;
  int max = MAX_KEYS;
  u8 quit;
  char msg[30];
  u32 current = 255;

  /* check wiimote status */
  if (WPAD_Probe(num, &current) != WPAD_ERR_NONE)
  {
    WaitPrompt("Wiimote is not connected !");
    return;
  }

  /* index for wpad_keymap */
  u8 index = current + (num * 3);

  /* loop on each mapped keys */
  for (i=0; i<max; i++)
  {
    /* remove any pending buttons */
    while (WPAD_ButtonsHeld(num))
    {
      WPAD_ScanPads();
      VIDEO_WaitVSync();
    }

    /* user information */
    ClearScreen();
    sprintf(msg,"Press key for %s",keys_name[i]);
    WriteCentre(254, msg);
    SetScreen();

    /* wait for input */
    quit = 0;
    while (quit == 0)
    {
      WPAD_ScanPads();

      /* get buttons */
      for (j=0; j<20; j++)
      {
        if (WPAD_ButtonsDown(num) & wpad_keys[j])
        {
          wpad_keymap[index][i]  = wpad_keys[j];
          quit = 1;
          j = 20;    /* leave loop */
        }
      }
    } /* wait for input */ 
  } /* loop for all keys */

  /* removed any pending buttons */
  while (WPAD_ButtonsHeld(num))
  {
    WPAD_ScanPads();
    VIDEO_WaitVSync();
  }
}
示例#2
0
文件: menu.c 项目: bogger33/gnuboy-gx
void DrawMenu (char items[][20], int maxitems, int selected)
{
  int i;
  int ypos;
 
  ypos = (330 - (maxitems * fheight)) >> 1;
  ypos += 90;
  ClearScreen ();
  WriteCentre (134, menutitle);

  for (i = 0; i < maxitems; i++)
  {
    if (i == selected) WriteCentre_HL (i * fheight + ypos, (char *) items[i]);
    else WriteCentre (i * fheight + ypos, (char *) items[i]);
  }

  SetScreen ();
}
示例#3
0
void WriteCentre_HL( int y, char *string)
{
  gx_texture *texture = gxTextureOpenPNG(Overlay_bar_png,0);
  if (texture)
  {
    gxDrawTexture(texture, 0, y-fheight,  640, fheight,240);
    if (texture->data) free(texture->data);
    free(texture);
  }
  WriteCentre(y, string);
}
示例#4
0
/*******************************
  gamepad support
*******************************/
static void pad_config(int num, int padtype)
{
  int i,j,max;
  u16 p;
  u8 quit;
  char msg[30];

  u32 pad = PAD_ScanPads() & (1<<num);
  if (!pad)
  {
    sprintf(msg, "PAD #%d is not connected !", num+1);
    WaitPrompt(msg);
    return;
  }

  /* configure keys */
  max = (padtype == DEVICE_6BUTTON) ? MAX_KEYS : (MAX_KEYS - 3);
  for (i=0; i<max; i++)
  {
    /* remove any pending keys */
    while (PAD_ButtonsHeld(num))
    {
      VIDEO_WaitVSync();
      PAD_ScanPads();
    }

    ClearScreen();
    sprintf(msg,"Press key for %s",keys_name[i]);
    WriteCentre(254, msg);
    SetScreen();

    /* check buttons state */
    quit = 0;
    while (quit == 0)
    {
      VIDEO_WaitVSync();
      PAD_ScanPads();
      p = PAD_ButtonsDown(num);

      for (j=0; j<8; j++)
      {
        if (p & pad_keys[j])
        {
           config.pad_keymap[num][i] = pad_keys[j];
           quit = 1;
           j = 9;   /* exit loop */
        }
      }
    }
  }
}
示例#5
0
文件: menu.c 项目: bogger33/gnuboy-gx
/****************************************************************************
 * Rom Info Menu
 *
 ****************************************************************************/
void RomInfo ()
{
  char msg[128];
  int rlen, ypos;

  ClearScreen ();
    strcpy (menutitle, "");
  ypos = 140;
  
    /* Title */
  WriteCentre (ypos , "Game Information");
  
  /* Rom name */
  ypos += fheight + fheight/2;
  sprintf(msg,"Internal Name - %s",rom.name);
  WriteCentre (ypos , msg);

  /* ROM Size */
  rlen = 16384 * mbc.romsize;
  rlen = rlen / 1024;
  if ((rlen/1024) == 0) sprintf(msg,"Rom Size - %d Ko",rlen);
  else sprintf(msg,"ROM Size - %d Mo",rlen/1024);
  ypos += fheight;
  WriteCentre (ypos , msg);

  /* RAM Size */
  sprintf(msg,"RAM Size - %d Ko",mbc.ramsize);
  ypos += fheight;
  WriteCentre (ypos , msg);

  /* Type */
  ypos += fheight;
  if (hw.cgb) WriteCentre (ypos , "Type - GameBoy COLOR");
  else WriteCentre (ypos , "Type - GameBoy MONO");

  /* Memory Controller Type */
  switch (mbc.type)
  {
    case MBC_NONE:
      sprintf(msg,"MBC Type - NONE");
      break;
    case MBC_MBC1:
      sprintf(msg,"MBC Type - MBC1");
      break;
    case MBC_MBC2:
      sprintf(msg,"MBC Type - MBC2");
      break;
    case MBC_MBC3:
      sprintf(msg,"MBC Type - MBC3");
      break;
    case MBC_MBC5:
      sprintf(msg,"MBC Type - MBC5");
      break;
    case MBC_RUMBLE:
      sprintf(msg,"MBC Type - RUMBLE");
      break;
    case MBC_HUC1:
      sprintf(msg,"MBC Type - HUC1");
      break;
    case MBC_HUC3:
      sprintf(msg,"MBC Type - HUC3");
      break;
  }
  
  ypos += fheight;
  WriteCentre ( ypos , msg);

  /* Internal battery */
  ypos += fheight;
  if (mbc.batt) WriteCentre (ypos , "Internal SRAM Batt. - YES");
  else WriteCentre (ypos , "Internal SRAM Batt. - NO");

  /* Internal RTC */
  ypos += fheight;
  if (rtc.batt) WriteCentre (ypos , "Internal RTC - YES");
  else WriteCentre (ypos , "Internal RTC - NO");

  ypos += 2*fheight;
  WriteCentre (ypos , "Press A to exit");
  
  SetScreen ();
  WaitButtonA ();
}
示例#6
0
static void wpad_config(u8 num, u8 exp, u8 padtype)
{
  int i,j,max;
  u8 quit;
  char msg[30];
  u32 current = 255;

  /* check wiimote status */
  WPAD_Probe(num, &current);
  if (((exp > WPAD_EXP_NONE) && (current != exp)) || (current == 255))
  {
    if (exp == WPAD_EXP_NONE)     sprintf(msg, "WIIMOTE #%d is not connected !", num+1);
    if (exp == WPAD_EXP_NUNCHUK)  sprintf(msg, "NUNCHUK #%d is not connected !", num+1);
    if (exp == WPAD_EXP_CLASSIC)  sprintf(msg, "CLASSIC #%d is not connected !", num+1);
    WaitPrompt(msg);
    return;
  }

  /* index for wpad_keymap */
  u8 index = exp + (num * 3);

  /* loop on each mapped keys */
  max = (padtype == DEVICE_6BUTTON) ? MAX_KEYS : (MAX_KEYS - 3);
  for (i=0; i<max; i++)
  {
    /* remove any pending buttons */
    while (WPAD_ButtonsHeld(num))
    {
      WPAD_ScanPads();
      VIDEO_WaitVSync();
    }

    /* user information */
    ClearScreen();
    sprintf(msg,"Press key for %s",keys_name[i]);
    WriteCentre(254, msg);
    SetScreen();

    /* wait for input */
    quit = 0;
    while (quit == 0)
    {
      WPAD_ScanPads();

      /* get buttons */
      for (j=0; j<20; j++)
      {
        if (WPAD_ButtonsDown(num) & wpad_keys[j])
        {
          config.wpad_keymap[index][i]  = wpad_keys[j];
          quit = 1;
          j = 20;    /* leave loop */
        }
      }
    } /* wait for input */ 
  } /* loop for all keys */

  /* removed any pending buttons */
  while (WPAD_ButtonsHeld(num))
  {
    WPAD_ScanPads();
    VIDEO_WaitVSync();
  }
}