예제 #1
0
파일: main.c 프로젝트: troy56/palibds
int main(void){

	PA_Init(); //PAlib inits
	PA_InitVBL();
	
	PA_LoadSpritePal(0, // Screen
					0, // Palette number
					(void*)sprite0_Pal);	// Palette name
					
	// We'll create 2 sprites
	PA_CreateSprite(0, 0, (void*)mollusk_Sprite, OBJ_SIZE_32X32, 1, 0, 0, 50); 
	PA_CreateSprite(0, 1, (void*)mollusk_Sprite, OBJ_SIZE_32X32, 1, 0, 64, 50); 

	PA_SetSpriteMode(0, // Screen
					0, // Sprite
					1); // Alphablending
	
	s16 alpha = 7; // Transparency level

	// Enable the alpha-blending
	PA_EnableSpecialFx(0, // Screen
						SFX_ALPHA, // Alpha blending mode
						0, // Nothing
						SFX_BG0 | SFX_BG1 | SFX_BG2 | SFX_BG3 | SFX_BD); // Everything normal


	while(1) // Infinite loops
	{
		alpha += Pad.Newpress.Up - Pad.Newpress.Down;
		PA_SetSFXAlpha(0, // Screen
						alpha, // Alpha level, 0-15
						15); // Leave this to 15
		
		PA_WaitForVBL();
	}
	
return 0;
}
예제 #2
0
void CDeck::discardCard(const typecard card, const bool discarded) {
  m_cardfrequency[card]++;
  // Delete the previously played card sprite at the top screen
  PA_DeleteSprite(1, SPRITE_NB_EMPTYCARD_PART2);
  PA_DeleteSprite(1, SPRITE_NB_EMPTYCARD_PART1);
  // Create a sprite for the card that has been discarded at the top screen
  switch (card.first) {
    case 0:
      switch (card.second) {
        case 0:
          PA_LoadSpritePal(1, PALETTE_NB_LAST_PLAYED_CARD, (void*)attack1_Pal);
          PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART1, (void*)attack1_1_Sprite,
                             OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD,
                             129, 1);
          PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART2, (void*)attack1_2_Sprite,
                          OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD,
                          129, 1+45);
          break;
        case 1:
          PA_LoadSpritePal(1, PALETTE_NB_LAST_PLAYED_CARD, (void*)attack2_Pal);
          PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART1, (void*)attack2_1_Sprite,
                          OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD,
                          129, 1);
          PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART2, (void*)attack2_2_Sprite,
                          OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD,
                          129, 1+45);
          break;
        case 2:
          PA_LoadSpritePal(1, PALETTE_NB_LAST_PLAYED_CARD, (void*)attack3_Pal);
          PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART1, (void*)attack3_1_Sprite,
                          OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD,
                          129, 1);
          PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART2, (void*)attack3_2_Sprite,
                          OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD,
                          129, 1+45);
          break;
        case 3:
          PA_LoadSpritePal(1, PALETTE_NB_LAST_PLAYED_CARD, (void*)attack4_Pal);
          PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART1, (void*)attack4_1_Sprite,
                          OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD,
                          129, 1);
          PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART2, (void*)attack4_2_Sprite,
                          OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD,
                          129, 1+45);
          break;
        case 4:
          PA_LoadSpritePal(1, PALETTE_NB_LAST_PLAYED_CARD, (void*)attack5_Pal);
          PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART1, (void*)attack5_1_Sprite,
                          OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD,
                          129, 1);
          PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART2, (void*)attack5_2_Sprite,
                          OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD,
                          129, 1+45);
          break;
        case 5:
          PA_LoadSpritePal(1, PALETTE_NB_LAST_PLAYED_CARD, (void*)attack6_Pal);
          PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART1, (void*)attack6_1_Sprite,
                          OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD,
                          129, 1);
          PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART2, (void*)attack6_2_Sprite,
                          OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD, 
                          129, 1+45);
          break;
        case 6:
          PA_LoadSpritePal(1, PALETTE_NB_LAST_PLAYED_CARD, (void*)attack7_Pal);
          PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART1, (void*)attack7_1_Sprite,
                          OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD,
                          129, 1);
          PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART2, (void*)attack7_2_Sprite,
                          OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD,
                          129, 1+45);
          break;
        case 7:
          PA_LoadSpritePal(1, PALETTE_NB_LAST_PLAYED_CARD, (void*)attack8_Pal);
          PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART1, (void*)attack8_1_Sprite,
                          OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD,
                          129, 1);
          PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART2, (void*)attack8_2_Sprite,
                          OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD,
                          129, 1+45);
          break;
        case 8:
          PA_LoadSpritePal(1, PALETTE_NB_LAST_PLAYED_CARD, (void*)attack9_Pal);
          PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART1, (void*)attack9_1_Sprite,
                          OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD,
                          129, 1);
          PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART2, (void*)attack9_2_Sprite,
                          OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD,
                          129, 1+45);
          break;
        case 9:
          PA_LoadSpritePal(1, PALETTE_NB_LAST_PLAYED_CARD, (void*)attack10_Pal);
          PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART1,
                          (void*)attack10_1_Sprite, OBJ_SIZE_64X64, 1,
                          PALETTE_NB_LAST_PLAYED_CARD, 129, 1);
          PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART2,
                          (void*)attack10_2_Sprite, OBJ_SIZE_64X64, 1,
                          PALETTE_NB_LAST_PLAYED_CARD, 129, 1+45);
          break;
        default:
          PA_OutputText(1,0,0,"This card number does not exist.");
          break;
      }
      break;
    case 1:
      switch (card.second) {
        case 0:
          PA_LoadSpritePal(1, PALETTE_NB_LAST_PLAYED_CARD, (void*)defense1_Pal);
          PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART1,
                          (void*)defense1_1_Sprite, OBJ_SIZE_64X64, 1,
                          PALETTE_NB_LAST_PLAYED_CARD, 129, 1);
          PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART2,
                          (void*)defense1_2_Sprite, OBJ_SIZE_64X64, 1,
                          PALETTE_NB_LAST_PLAYED_CARD, 129, 1+45);
          break;
        case 1:
          PA_LoadSpritePal(1, PALETTE_NB_LAST_PLAYED_CARD, (void*)defense2_Pal);
          PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART1,
                          (void*)defense2_1_Sprite, OBJ_SIZE_64X64, 1,
                          PALETTE_NB_LAST_PLAYED_CARD, 129, 1);
          PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART2,
                          (void*)defense2_2_Sprite, OBJ_SIZE_64X64, 1,
                          PALETTE_NB_LAST_PLAYED_CARD, 129, 1+45);
          break;
        case 2:
          PA_LoadSpritePal(1, PALETTE_NB_LAST_PLAYED_CARD, (void*)defense3_Pal);
          PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART1,
                          (void*)defense3_1_Sprite, OBJ_SIZE_64X64, 1,
                          PALETTE_NB_LAST_PLAYED_CARD, 129, 1);
          PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART2,
                          (void*)defense3_2_Sprite, OBJ_SIZE_64X64, 1,
                          PALETTE_NB_LAST_PLAYED_CARD, 129, 1+45);
          break;
        case 3:
          PA_LoadSpritePal(1, PALETTE_NB_LAST_PLAYED_CARD, (void*)defense4_Pal);
          PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART1,
                          (void*)defense4_1_Sprite, OBJ_SIZE_64X64, 1,
                          PALETTE_NB_LAST_PLAYED_CARD, 129, 1);
          PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART2,
                          (void*)defense4_2_Sprite, OBJ_SIZE_64X64, 1,
                          PALETTE_NB_LAST_PLAYED_CARD, 129, 1+45);
          break;
        case 4:
          PA_LoadSpritePal(1, PALETTE_NB_LAST_PLAYED_CARD, (void*)defense5_Pal);
          PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART1,
                          (void*)defense5_1_Sprite, OBJ_SIZE_64X64, 1,
                          PALETTE_NB_LAST_PLAYED_CARD, 129, 1);
          PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART2,
                          (void*)defense5_2_Sprite, OBJ_SIZE_64X64, 1,
                          PALETTE_NB_LAST_PLAYED_CARD, 129, 1+45);
          break;
        case 5:
          PA_LoadSpritePal(1, PALETTE_NB_LAST_PLAYED_CARD, (void*)defense6_Pal);
          PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART1,
                          (void*)defense6_1_Sprite, OBJ_SIZE_64X64, 1,
                          PALETTE_NB_LAST_PLAYED_CARD, 129, 1);
          PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART2,
                          (void*)defense6_2_Sprite, OBJ_SIZE_64X64, 1,
                          PALETTE_NB_LAST_PLAYED_CARD, 129, 1+45);
          break;
        case 6:
          PA_LoadSpritePal(1, PALETTE_NB_LAST_PLAYED_CARD, (void*)defense7_Pal);
          PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART1,
                          (void*)defense7_1_Sprite, OBJ_SIZE_64X64, 1,
                          PALETTE_NB_LAST_PLAYED_CARD, 129, 1);
          PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART2,
                          (void*)defense7_2_Sprite, OBJ_SIZE_64X64, 1,
                          PALETTE_NB_LAST_PLAYED_CARD, 129, 1+45);
          break;
        case 7:
          PA_LoadSpritePal(1, PALETTE_NB_LAST_PLAYED_CARD, (void*)defense8_Pal);
          PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART1,
                          (void*)defense8_1_Sprite, OBJ_SIZE_64X64, 1,
                          PALETTE_NB_LAST_PLAYED_CARD, 129, 1);
          PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART2,
                          (void*)defense8_2_Sprite, OBJ_SIZE_64X64, 1,
                          PALETTE_NB_LAST_PLAYED_CARD, 129, 1+45);
          break;
        case 8:
          PA_LoadSpritePal(1, PALETTE_NB_LAST_PLAYED_CARD, (void*)defense9_Pal);
          PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART1,
                          (void*)defense9_1_Sprite, OBJ_SIZE_64X64, 1,
                          PALETTE_NB_LAST_PLAYED_CARD, 129, 1);
          PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART2,
                          (void*)defense9_2_Sprite, OBJ_SIZE_64X64, 1,
                          PALETTE_NB_LAST_PLAYED_CARD, 129, 1+45);
          break;
        case 9:
          PA_LoadSpritePal(1, PALETTE_NB_LAST_PLAYED_CARD,
                           (void*)defense10_Pal);
          PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART1,
                          (void*)defense10_1_Sprite, OBJ_SIZE_64X64, 1,
                          PALETTE_NB_LAST_PLAYED_CARD, 129, 1);
          PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART2,
                          (void*)defense10_2_Sprite, OBJ_SIZE_64X64, 1,
                          PALETTE_NB_LAST_PLAYED_CARD, 129, 1+45);
          break;
        default:
          PA_OutputText(1,0,0,"This card number does not exist.");
          break;
      }
      break;
    case 2:
      switch (card.second) {
        case 0:
          PA_LoadSpritePal(1, PALETTE_NB_LAST_PLAYED_CARD, (void*)magic1_Pal);
          PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART1, (void*)magic1_1_Sprite,
                          OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD,
                          129, 1);
          PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART2, (void*)magic1_2_Sprite,
                          OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD,
                          129, 1+45);
          break;
        case 1:
          PA_LoadSpritePal(1, PALETTE_NB_LAST_PLAYED_CARD, (void*)magic2_Pal);
          PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART1, (void*)magic2_1_Sprite,
                          OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD,
                          129, 1);
          PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART2, (void*)magic2_2_Sprite,
                          OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD, 129,
                          1+45);
          break;
        case 2:
          PA_LoadSpritePal(1, PALETTE_NB_LAST_PLAYED_CARD, (void*)magic3_Pal);
          PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART1, (void*)magic3_1_Sprite,
                          OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD,
                          129, 1);
          PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART2, (void*)magic3_2_Sprite,
                          OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD,
                          129, 1+45);
          break;
        case 3:
          PA_LoadSpritePal(1, PALETTE_NB_LAST_PLAYED_CARD, (void*)magic4_Pal);
          PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART1, (void*)magic4_1_Sprite,
                          OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD,
                          129, 1);
          PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART2, (void*)magic4_2_Sprite,
                          OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD,
                          129, 1+45);
          break;
        case 4:
          PA_LoadSpritePal(1, PALETTE_NB_LAST_PLAYED_CARD, (void*)magic5_Pal);
          PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART1, (void*)magic5_1_Sprite,
                            OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD,
                            129, 1);
          PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART2, (void*)magic5_2_Sprite,
                          OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD,
                          129, 1+45);
          break;
        case 5:
          PA_LoadSpritePal(1, PALETTE_NB_LAST_PLAYED_CARD, (void*)magic6_Pal);
          PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART1, (void*)magic6_1_Sprite,
                          OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD,
                          129, 1);
          PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART2, (void*)magic6_2_Sprite,
                          OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD,
                          129, 1+45);
          break;
        case 6:
          PA_LoadSpritePal(1, PALETTE_NB_LAST_PLAYED_CARD, (void*)magic7_Pal);
          PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART1, (void*)magic7_1_Sprite,
                          OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD,
                          129, 1);
          PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART2, (void*)magic7_2_Sprite,
                          OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD,
                          129, 1+45);
          break;
        case 7:
          PA_LoadSpritePal(1, PALETTE_NB_LAST_PLAYED_CARD, (void*)magic8_Pal);
          PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART1, (void*)magic8_1_Sprite,
                          OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD,
                          129, 1);
          PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART2, (void*)magic8_2_Sprite,
                          OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD,
                          129, 1+45);
          break;
        case 8:
          PA_LoadSpritePal(1, PALETTE_NB_LAST_PLAYED_CARD, (void*)magic9_Pal);
          PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART1, (void*)magic9_1_Sprite,
                          OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD,
                          129, 1);
          PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART2, (void*)magic9_2_Sprite,
                          OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD,
                          129, 1+45);
          break;
        case 9:
          PA_LoadSpritePal(1, PALETTE_NB_LAST_PLAYED_CARD, (void*)magic10_Pal);
          PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART1, (void*)magic10_1_Sprite,
                          OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD,
                          129, 1);
          PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART2, (void*)magic10_2_Sprite,
                          OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD,
                          129, 1+45);
          break;
        default:
          PA_OutputText(1,0,0,"This card number does not exist.");
          break;
      }
      break;
    default:
      PA_OutputText(1,0,0,"This card type does not exist.");
      break;
  }
  PA_SetSpritePrio (1, SPRITE_NB_BACKCARD_PART1, 2);
  PA_SetSpritePrio (1, SPRITE_NB_BACKCARD_PART2, 2);
  PA_SetSpritePrio (1, SPRITE_NB_EMPTYCARD_PART1, 2);
  PA_SetSpritePrio (1, SPRITE_NB_EMPTYCARD_PART2, 2);
  // Set the sprite's mode to alpha blending if the card is discarded
  if (discarded) {
    PA_SetSpriteMode(1, SPRITE_NB_EMPTYCARD_PART1, 1);
    PA_SetSpriteMode(1, SPRITE_NB_EMPTYCARD_PART2, 1);
  }
  else {
    PA_SetSpriteMode(1, SPRITE_NB_EMPTYCARD_PART1, 0);
    PA_SetSpriteMode(1, SPRITE_NB_EMPTYCARD_PART2, 0);
  }
}
예제 #3
0
bool COptions::display(int *p_musicVolume, int *p_cardSpeed) {
  // Display the options menu with the resume button selected
  PA_EasyBgLoad(0, 2, optionsresume);
  // Set the values for the music volume and card speed
  // with the function parameters 
  m_musicVolume = *p_musicVolume;
  m_cardSpeed = *p_cardSpeed;
  // Display the item sprite at the position that corresponds to the current
  // music volume 
  switch (m_musicVolume) {
    case 0:
      PA_CreateSprite(0, INDEX_SPRITE_NB_ITEM_MUSIC, (void*)item_Sprite,
                      OBJ_SIZE_32X32, 1, PALETTE_NB_ITEM, 137, 52);
      break;
    case 60:
      PA_CreateSprite(0, INDEX_SPRITE_NB_ITEM_MUSIC, (void*)item_Sprite,
                      OBJ_SIZE_32X32, 1, PALETTE_NB_ITEM, 176, 52);
      break;
    case 127:
      PA_CreateSprite(0, INDEX_SPRITE_NB_ITEM_MUSIC, (void*)item_Sprite,
                      OBJ_SIZE_32X32, 1, PALETTE_NB_ITEM, 213, 52);
      break;
    default:
      PA_CreateSprite(0, INDEX_SPRITE_NB_ITEM_MUSIC, (void*)item_Sprite,
                      OBJ_SIZE_32X32, 1, PALETTE_NB_ITEM, 176, 52);
      break;
  }
  // Clone the music volume item sprite to get the card speed item sprite
  PA_CloneSprite(0, INDEX_SPRITE_NB_ITEM_SPEED, INDEX_SPRITE_NB_ITEM_MUSIC);
  // Display the cloned item sprite at the position that corresponds
  // to the current card speed 
  switch (m_cardSpeed) {
    case 5:
      PA_SetSpriteXY(0, INDEX_SPRITE_NB_ITEM_SPEED, 137, 99);
      break;
    case 10:
      PA_SetSpriteXY(0, INDEX_SPRITE_NB_ITEM_SPEED, 176, 99);
      break;
    case 20:
      PA_SetSpriteXY(0, INDEX_SPRITE_NB_ITEM_SPEED, 213, 99);
      break;
    default:
      PA_SetSpriteXY(0, INDEX_SPRITE_NB_ITEM_SPEED, 176, 99);
      break;
  }
  // Set the item sprites mode to alpha blending
  PA_SetSpriteMode(0, INDEX_SPRITE_NB_ITEM_MUSIC, 1);
  PA_SetSpriteMode(0, INDEX_SPRITE_NB_ITEM_SPEED, 1);
  // Change the background to the corresponding player's action
  m_itemTouched = -1;
  PA_WaitForVBL();
  while (!Pad.Newpress.Start) {
    m_itemTouched = itemTouched();  // Perform the action and return the
                                    // player's selection
    switch(m_itemTouched) {
      case 1:
        PA_EasyBgLoad(0, 1, optionsresume);
        break;
      case 2:
        PA_EasyBgLoad(0, 1, optionsmusic);
        break;
      case 3:
        PA_EasyBgLoad(0, 1, optionsspeed);
        break;
      case 4:
        PA_EasyBgLoad(0, 1, optionsno);
        break;
      case 5:
        PA_EasyBgLoad(0, 1, optionsno);
        break;
      case 6:
        PA_EasyBgLoad(0, 1, optionsyes);
        break;
      default:
        break;
    }
    // Quit the loop if the player chooses to resume or quit the game
    if ((m_itemTouched == 1) || (m_itemTouched == 5) || (m_itemTouched == 6))
      break;
    PA_WaitForVBL();
  }
  // Delete the item sprites
  PA_DeleteSprite(0, INDEX_SPRITE_NB_ITEM_SPEED);
  PA_DeleteSprite(0, INDEX_SPRITE_NB_ITEM_MUSIC);
  // Retrieve the music volume and card speed
  *p_musicVolume = m_musicVolume;
  *p_cardSpeed = m_cardSpeed;
  // Return the state of the game
  switch(m_itemTouched) {
    case 0:  // Resume the game
      return false;
      break;
    case 5:  // Resume the game
      return false;
      break;
    case 6:  // Quit the game
      return true;
      break;
    default:
      break;
  }
  return false;
}